本地时间与Unix时间戳互转失败问题求助
问题分析与解决
你的问题出在直接将pytz时区对象传入datetime构造函数的tzinfo参数,pytz的时区包含夏令时(DST)等历史时区规则,直接赋值无法正确应用这些规则,导致时间戳转换出现偏差。
修正后的代码
import datetime import pytz time_zone = pytz.timezone('America/Chicago') # 使用localize方法绑定时区到无时区信息的datetime a = time_zone.localize(datetime.datetime(2019, 1, 1, 0, 0, 0)) b = datetime.datetime.fromtimestamp(a.timestamp(), time_zone) print("The value of a is ", a) print("The value of b is ", b)
原代码出错原因
pytz的时区对象不是简单的UTC偏移值,它包含该时区的历史变更记录(比如夏令时切换规则)。直接在datetime构造函数中传入tzinfo=time_zone时,创建的datetime对象不会加载这些规则,导致内部时区偏移计算错误。而localize方法会根据给定的日期时间自动匹配对应时区规则,确保时间戳转换的准确性。
运行修正后的代码,a和b的输出会完全匹配。
内容的提问来源于stack exchange,提问作者csamudio
相关产品推荐
相关产品推荐

