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

Python中如何将UTC字符串日期正确转换为UTC时间戳?

UTC时间字符串转UTC时间戳的正确方法

你遇到的问题根源在于:datetime.strptime解析出的是无时区信息的naive datetime对象,调用timestamp()时,Python会默认把这个对象当作本地时区的时间来转换,而非你预期的UTC时间,所以得到了错误的时间戳。

正确的转换方式

方法一:内置库实现(无需第三方依赖)

通过replace()方法给解析后的datetime对象明确指定UTC时区,这样timestamp()就会按照UTC时间计算对应的时间戳:

from datetime import datetime, timezone

# 你的UTC时间字符串
utc_time_str = '2023-08-02 14:52:05'
# 解析字符串并标记为UTC时区
dt_utc = datetime.strptime(utc_time_str, '%Y-%m-%d %H:%M:%S').replace(tzinfo=timezone.utc)
# 转换为毫秒级UTC时间戳
utc_timestamp = dt_utc.timestamp() * 1000

print(utc_timestamp)  # 输出:1691031125000.0,对应UTC 2023-08-02 14:52:05

方法二:使用第三方库python-dateutil(更简洁)

如果你的项目允许使用第三方库,python-dateutil可以更便捷地处理时区:

from datetime import datetime
from dateutil.tz import tzutc

utc_time_str = '2023-08-02 14:52:05'
dt_utc = datetime.strptime(utc_time_str, '%Y-%m-%d %H:%M:%S').replace(tzinfo=tzutc())
utc_timestamp = dt_utc.timestamp() * 1000

# 也可以直接用dateutil的解析器自动识别时区(如果字符串带UTC标识的话)
# from dateutil import parser
# dt_utc = parser.parse(f"{utc_time_str} UTC")
# utc_timestamp = dt_utc.timestamp() * 1000

验证结果

转换后的时间戳1691031125000.0对应的UTC时间就是你输入的2023-08-02 14:52:05,解决了原代码的时区转换偏差问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:01:02