技术栈

弃用

Patrick在香港
2 小时前
数据库·python·标准库·datetime·时区·弃用
时间戳凭空早了 8 小时:datetime.utcnow() 弃用实测与漂移复盘下午排查一个定时任务:数据库里的记录时间比现实早了整整 8 小时,但代码里的时间函数看着完全正常。追到底层,源头是那一行写了十年的 datetime.utcnow()——Python 3.12 起它已被官方弃用,根因不是性能,而是它返回的对象没有时区标签:数值是 UTC 的,身份却是「无主」的。这篇把这场漂移完整复现了一遍,全部本地实测(Python 3.13.12,本机 UTC+8),四条事故路径加三条替代写法,一次讲清。
我是有底线的