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

Python如何从UTC datetime对象获取正确的时间戳

问题根因

datetime.datetime.utcnow()返回的是不带时区信息的原生datetime对象,Python调用这类对象的timestamp()方法时,会默认将其识别为本地时区的时间来计算与纪元时间的差值,因此你处在UTC+8时区时,得到的结果就会比正确UTC时间戳少8小时。

解决方案

你可以直接用已有的utc时间对象和UTC纪元时间做差计算,全程复用现有对象计算时间戳,不需要创建任何新的动态时间对象,不会产生微秒级误差:

import datetime

utc_time = datetime.datetime.utcnow()
# 计算与UTC纪元起始时间的差值,直接得到正确时间戳
correct_timestamp = (utc_time - datetime.datetime(1970, 1, 1)).total_seconds()

注:代码中的datetime.datetime(1970, 1, 1)是固定的纪元起始时间常量,不是动态生成的当前时间对象,不会引入任何额外的时间误差。

如果你的Python版本 >=3.9,后续生成UTC时间时更推荐直接使用带时区信息的datetime对象,后续调用timestamp()会直接返回正确结果:

import datetime

# 生成带UTC时区信息的datetime对象
utc_time_with_tz = datetime.datetime.now(datetime.timezone.utc)
correct_timestamp = utc_time_with_tz.timestamp()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:09:02