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

Python使用pytz设置不同时区生成Unix时间戳不一致问题求解

问题原因及解决方案

核心原因

你遇到的差值问题是pytz库的特有使用问题:

  • pytz的时区对象不能直接传入datetime构造函数的tzinfo参数使用。pytz存储了对应时区所有历史时期的UTC偏移规则,直接赋值给tzinfo时,不会自动适配你指定日期对应的偏移量,只会调用该时区的基准偏移值(2021年美国东部时区预期偏移为UTC-5,而你代码中实际生效的是早年间的UTC-4:56偏移,刚好差240秒,和你输出的差值完全匹配)。
  • 你代码里创建的start1对象实际上并未对应你预期的UTC 21点,因此时间戳存在差异。

修复方案

使用pytz时区对象的localize()方法,给原生无时区的datetime绑定对应日期的正确偏移:

import pytz
from datetime import datetime

start = datetime(2021, month=1, day=30, hour=21, minute=0, second=0, tzinfo=pytz.utc)
# 先创建无时区的datetime,再用localize绑定时区
naive_eastern = datetime(2021, month=1, day=30, hour=16, minute=0, second=0)
start1 = pytz.timezone('US/Eastern').localize(naive_eastern)

print(start.timestamp())
print(start1.timestamp())

运行后两个输出均为1612040400.0,符合预期。

补充说明

如果你使用Python 3.9及以上版本,推荐使用标准库自带的zoneinfo替代pytz,zoneinfo的时区对象可以直接传入tzinfo参数使用,不存在上述兼容问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:45:03