令人困惑的时区行为


import datetime
import pytz # install from pip
US_PACIFIC_TIMEZONE = pytz.timezone("US/Pacific")
dt = datetime.datetime.utcnow().replace(tzinfo=US_PACIFIC_TIMEZONE)
print(dt == dt.replace(tzinfo=US_PACIFIC_TIMEZONE)) # True
dt = datetime.datetime.now(tz=US_PACIFIC_TIMEZONE)
print(dt == dt.replace(tzinfo=US_PACIFIC_TIMEZONE)) # False

所以看起来datetime.datetime.now(tz=..)没有设置为我指定的时区......

看起来时区是在使用时设置的 datetime.now ,但它偏离了一个小时区。

这是为什么呢?

您的问题中唯一正确的公式是:

dt = datetime.now(US_PACIFIC_TIMEZONE)

US_PACIFIC_TIMEZONE在不同的日期可能有不同的 UTC 偏移量,例如,由于 DST 转换。不应将.replace()方法(或tzinfo构造函数参数(与此类pytz时区一起使用。下面解释了为什么不应将replace()与具有可变 UTC 偏移量的pytz时区一起使用。

相关内容

  • 没有找到相关文章

最新更新