当你创建时d2 = datetime(2015, 8, 1, 0, 0, 0, 0, local_tz)
,它不能正确处理夏令时 (DST)。local_tz.localize()
does.
d1
is
>>> local_tz.localize(datetime(2015, 8, 1, 0, 0, 0, 0))
datetime.datetime(
2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>
)
d2
is
>>> datetime(2015, 8, 1, 0, 0, 0, 0, local_tz)
datetime.datetime(
2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' LMT-1 day, 16:07:00 STD>
)
您可以看到它们代表的时间不同。
d2
如果您要与 UTC 合作,这种方式就很好。 UTC 没有夏令时 (DST) 转换需要处理。
处理时区的正确方法是使用local_tz.localize()
支持夏令时 (DST)
更多信息和其他示例可以在这里找到:
http://pytz.sourceforge.net/#localized-times-and-date-arithmetic http://pytz.sourceforge.net/#localized-times-and-date-arithmetic