为什么这两行产生不同的结果?
>>> import pytz
>>> from datetime ipmort datetime
>>> local_tz = pytz.timezone("America/Los_Angeles")
>>> d1 = local_tz.localize(datetime(2015, 8, 1, 0, 0, 0, 0)) # line 1
>>> d2 = datetime(2015, 8, 1, 0, 0, 0, 0, local_tz) # line 2
>>> d1 == d2
False
差异的原因是什么,我应该用它来定位日期时间?
答案 0 :(得分:4)
以这种方式创建d2=datetime(2015, 8, 1, 0, 0, 0, 0, local_tz)
时。它无法正确处理夏令时。但是,local_tz.localize()
会这样做。
d1是
datetime.datetime(2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)
d2是
datetime.datetime(2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
你可以看到他们没有代表同一时间。
d2
如果您要使用UTC,那就没关系了。因为UTC没有夏令时转换来处理。
因此,处理时区的正确方法是使用local_tz.localize()