from datetime import datetime
import pytz
tz = pytz.timezone("Asia/Singapore")
date_1 = datetime.now(tz=pytz.utc)
print(date_1.replace(tzinfo=tz).replace(tzinfo=pytz.utc).timestamp())
print(date_1.timestamp())
date_2 = datetime.now(tz=tz)
print(date_2.replace(tzinfo=pytz.utc).replace(tzinfo=tz).timestamp())
print(date_2.timestamp())
输出:
1483599557.338336
1483599557.338336
1483603457.33842
1483599557.33842
为什么变量date_2的时间戳在tzinfo被替换两次后有所不同?
因为变量date_1是相同的。
答案 0 :(得分:0)
多年来,时区和抵消都在变化。 pytz创建时区对象时传递的默认区域名称和偏移量是该区域最早可用的区域名称和偏移量,有时它们看起来有点奇怪。使用normalize将区域更改为日期时,将替换正确的区域名称和偏移量。只需使用datetime构造函数将区域附加到日期就不允许它正确调整。
tz.normalize(pytz.utc.normalize(date_2)).timestamp() == date_2.timestamp()