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
时区一起使用。