Python Pytz US/Pacific 时区问题

Python Pytz US/Pacific timezone issue

这是我的 Python 代码:

import pytz
from datetime import datetime

tz = pytz.timezone('US/Pacific')
now_local = datetime.now().replace(tzinfo=tz)
print("now_local: {}".format(now_local))

它打印此输出:

now_local: 2018-11-13 12:06:03.255983-07:53

这很奇怪,因为我认为时区偏移量应该是 -08:00 而不是 -07:53。我很确定美国太平洋的时区偏移是 8 小时。

我是不是漏掉了什么?

我正在使用 Python 版本 2.7.14 和 Pytz 版本 2018.4

是的,pytz的主页显示了这个错误:

Unfortunately using the tzinfo argument of the standard datetime constructors “does not work” with pytz for many timezones.

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)  # /!\ Does not work this way!
'2002-10-27 12:00:00 LMT+0020'

您需要使用tz.localize(dt):

>>> print(tz.localize(datetime.now()))
2018-11-13 15:20:12.172381-08:00

否则,您的 tzinfo 对象将停留在“默认”状态,对于大多数区域而言,“默认时间”是“本地平均时间”的某种近似值,而不是任何标准时间。