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

Python计算两个时间戳间隔返回负数,结果与预期不符问题排查

问题分析与解决

首先,你得到的-686是符合代码逻辑的正确计算结果,但和预期不符的问题,根源在于对时间格式的理解以及时间顺序的处理上:

为什么会得到-686?

当用datetime.strptime配合%Y-%m-%d %H:%M:%S.%f解析时间字符串时:

  • x = '2018-01-28 08:58:10.83'里的.83会被解析为830000微秒(也就是830毫秒,因为1秒=1000毫秒=1000000微秒),所以x_time实际是2018-01-28 08:58:10.830000
  • y = '2018-01-28 08:58:10.144'里的.144会被解析为144000微秒(144毫秒),对应y_time是2018-01-28 08:58:10.144000

很明显,x_time的时间点比y_time晚,所以y_time - x_time得到的是负的时间差,转换为毫秒后就是-686,这完全符合计算逻辑。

为什么预期是61?

你预期的61大概率是对时间字符串的小数部分理解有误:你可能把.83当成了83毫秒,把.144当成了144毫秒,于是误以为144-83=61毫秒,但实际上,%S.%f里的.xxx是秒的小数部分,不是直接的毫秒数。

如何得到你预期的结果?

如果目标确实是得到61毫秒的时间差,需要调整输入或代码:

  1. 检查时间字符串是否正确:如果实际需要两个时间的毫秒部分差为61,时间字符串应该类似:
    • x: '2018-01-28 08:58:10.144'
    • y: '2018-01-28 08:58:10.205'(205-144=61毫秒)
  2. 调整时间顺序:如果是想计算x_time比y_time晚多少毫秒,把代码中的差值计算改成:
    diff = x_time - y_time
    duration_milliseconds = round(diff.total_seconds() * 1000)
    print(duration_milliseconds)  # 输出686
    

内容的提问来源于stack exchange,提问作者PythonDev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:54