计算时间差时遇strptime()报错:参数1必须为str而非int
问题解决方案
错误原因
strptime() 函数的第一个参数必须是字符串类型,但你代码中传入的 result[0]['outTime'] 或 result[0]['inTime'] 是整数,因此触发了类型错误。
解决方法
根据你的时间整数格式,选择对应的处理方式:
情况1:整数是HHMMSS格式(如133000代表13:30:00)
先把整数转成标准的时分秒字符串,再用strptime()解析:
def int_to_hhmmss(time_int): # 把整数补零到6位,再分割为时分秒格式 time_str = f"{time_int:06d}" return f"{time_str[:2]}:{time_str[2:4]}:{time_str[4:]}" if result[0]['outTime'] is not None: type = "bothPunchDone" FMT = '%H:%M:%S' # 转换整数为时间字符串 out_time_str = int_to_hhmmss(result[0]['outTime']) in_time_str = int_to_hhmmss(result[0]['inTime']) # 计算时间差 total = datetime.strptime(out_time_str, FMT) - datetime.strptime(in_time_str, FMT)
情况2:整数是总秒数(如66600代表18小时30分钟)
直接用timedelta处理,不需要strptime():
if result[0]['outTime'] is not None: type = "bothPunchDone" # 把秒数转成时间间隔对象 out_time = datetime.timedelta(seconds=result[0]['outTime']) in_time = datetime.timedelta(seconds=result[0]['inTime']) total = out_time - in_time
注意事项
先执行print(result[0]['outTime'], result[0]['inTime'])确认整数的具体格式,再选择对应方案。
内容的提问来源于stack exchange,提问作者Nishant Sharma
相关产品推荐
相关产品推荐

