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

如何在Python中计算两个datetime对象的毫秒差值?

计算两个datetime对象的毫秒差

嘿,我来帮你搞定这个时间差计算的问题!先理清你可能遇到的问题,再给你正确的操作步骤:

正确的计算逻辑

Python里的datetime.datetime对象直接相减会得到一个timedelta对象,这个对象包含了两个时间的差值。要得到毫秒差,只需要把timedelta的总秒数乘以1000就行,步骤如下:

  1. 计算两个时间的差值,得到timedelta对象
  2. 调用total_seconds()方法获取总秒数,再乘以1000转换为毫秒

给你一个示例代码:

from datetime import datetime

# 假设你的两个时间对象是这样的(如果是time类型,把datetime换成time即可)
RA_1 = datetime.strptime("02:49:01.210000", "%H:%M:%S.%f")
RA_2 = datetime.strptime("02:49:01.230000", "%H:%M:%S.%f")

# 计算差值(注意顺序,晚的时间减早的时间得到正差值)
delta = RA_2 - RA_1
# 转换为毫秒
millisecond_diff = delta.total_seconds() * 1000

print(millisecond_diff)  # 输出 20.0,也就是20毫秒

你可能遇到报错的原因

如果直接减或者调用total_seconds()时报错,大概率是这两个时间对象的时区不一致:

  • 一个是带时区信息的aware datetime,另一个是不带时区的naive datetime,Python不允许直接对这两种对象做减法
  • 解决方法是把它们统一到同一个时区,比如把naive的时间添加上时区信息,或者把aware的时间转换为UTC后再计算

举个时区统一的例子(Python 3.9+可用zoneinfo,旧版本可以用pytz):

from datetime import datetime
import zoneinfo

# 一个带时区,一个不带时区的例子
RA_1 = datetime(2024, 5, 20, 2, 49, 1, 210000, tzinfo=zoneinfo.ZoneInfo("Asia/Shanghai"))
RA_2 = datetime(2024, 5, 20, 2, 49, 1, 230000)  # naive 时间

# 给naive时间添加和RA_1相同的时区信息
RA_2 = RA_2.replace(tzinfo=zoneinfo.ZoneInfo("Asia/Shanghai"))

# 现在就可以正常计算差值了
delta = RA_2 - RA_1
millisecond_diff = delta.total_seconds() * 1000
print(millisecond_diff)

如果你的对象是datetime.time类型,逻辑是完全一样的——直接相减得到timedelta,再转成毫秒即可,不会有时区问题(因为time对象不带日期和时区)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:58:40