为什么Python datetime对象没有millisecond(毫秒)单位属性?
Python timedelta无毫秒属性的原因
你拿到的时间差diff是datetime.timedelta类型,这个类型的底层设计就只有days、seconds、microseconds三个存储字段,没有单独的毫秒属性是官方刻意做的设计取舍,原因主要有两点:
- 避免属性冗余:毫秒和微秒是固定1:1000的换算关系,直接通过微秒计算毫秒的成本极低,不需要额外单独维护一个毫秒属性,减少不必要的存储和同步开销
- 避免计算歧义:如果同时提供微秒和毫秒两个属性,很容易出现属性修改后不同步的问题,反而会引入更多不易排查的时间计算错误
如果你需要获取毫秒单位的耗时,可以直接通过现有属性换算:
# 仅获取不足1秒部分的毫秒数 ms_part = diff.microseconds // 1000 # 获取完整的总耗时毫秒数(包含天、秒部分的总时长) total_ms = diff.total_seconds() * 1000
额外提示:你当前代码里直接打印
diff.microseconds的写法存在漏洞:这个属性仅返回时间差中不足1秒的微秒数,如果你的代码运行耗时超过1秒,打印出来的数值会远小于真实总微秒数,建议优先用total_seconds()方法计算总耗时。
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

