Python中time.localtime()格式化字符串无法做减法如何计算时间差?
代码修正方案
错误原因
你代码里核心错误有两类:
- 逻辑计算错误:
time.strftime()输出为字符串类型,字符串不支持减法运算,无法直接计算时间差值 - 语法错误:多处将赋值符号
=误写为比较符号==,导致循环无法退出、变量状态不会更新,同时如果进入else分支会出现start_time_format未定义的报错
修正思路
计算时间差不要直接操作格式化后的字符串,改用时间戳计算:time.time() 可以获取从1970年1月1日0点至今的总秒数(浮点型),两个时间戳直接相减就能得到精确的时间差,之后再把差值格式化为时分秒的展示形式即可。
修正后代码
import time import RPi.GPIO as GPIO # 此处替换为你实际配置的输入引脚编号,GPIO模式保持和你原有配置一致 inPut = 你的引脚编号 GPIO.setmode(GPIO.BCM) GPIO.setup(inPut, GPIO.IN) pol = True # 提前定义起始时间戳,避免分支未定义问题 start_timestamp = 0 if GPIO.input(inPut) == 1: while pol == True: # 记录起始时间戳 start_timestamp = time.time() # 赋值为False退出循环,注意是单等号 pol = False else: pol = True # 此处可根据你的业务逻辑补充引脚为低电平时的处理规则,比如不计时就将start_timestamp设为和当前时间一致 # 记录结束时间戳 current_timestamp = time.time() # 计算时间差,单位为秒 work_time_seconds = current_timestamp - start_timestamp # 可选:将秒级时间差转换为时分秒格式 hours = int(work_time_seconds // 3600) minutes = int((work_time_seconds % 3600) // 60) seconds = int(work_time_seconds % 60) work_time_format = f"{hours:02d}:{minutes:02d}:{seconds:02d}" print(work_time_format)
内容的提问来源于stack exchange,提问作者محمود طاهر
相关产品推荐
相关产品推荐

