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

计算时间差时遇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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:35:18