Nic*_*ick 5 python timezone datetime pytz
为什么这两行产生不同的结果?
>>> 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
Run Code Online (Sandbox Code Playgroud)
差异的原因是什么,我应该用哪个来定位日期时间?
当您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>)
Run Code Online (Sandbox Code Playgroud)
d2是
datetime.datetime(2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)
您可以看到它们不在同一时间。
d2如果您要使用UTC,那就很好了。因为UTC没有夏令时转换。
因此,处理时区的正确方法是 local_tz.localize()