You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中time.localtime()格式化字符串无法做减法如何计算时间差?

代码修正方案

错误原因

你代码里核心错误有两类:

  1. 逻辑计算错误:time.strftime() 输出为字符串类型,字符串不支持减法运算,无法直接计算时间差值
  2. 语法错误:多处将赋值符号=误写为比较符号==,导致循环无法退出、变量状态不会更新,同时如果进入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,提问作者محمود طاهر

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:06:03