python-pytz:为什么这些不同的方法给出不同的UTC偏移量?
作者:互联网
使用pytz在特定时区中创建日期时间对象时,我将获得不同的UTC偏移量,具体取决于我使用的是datetime.datetime()还是datetime.datetime.now().
now()似乎为时区提供了正确的UTC偏移,datetime()给出了我无法识别的偏移.
他们为什么不同? datetime()分配的偏移量的意义是什么?
这是我的代码:
import datetime
import pytz
la_paz = pytz.timezone('America/La_Paz')
a = datetime.datetime.now(la_paz)
print a, a.utcoffset()
# 2011-03-22 05:30:13-04:00 -1 day, 20:00:00
# -4 hours is the correct UTC offset for La Paz
b = datetime.datetime(2011, 03, 22, 5, 30, tzinfo=la_paz)
print b, b.utcoffset()
# 2011-03-22 05:30:00-04:33 -1 day, 19:27:00
# What is the significance of -4:33?
解决方法:
似乎datetime()将默认使用该区域的第一个记录的时区,并且在许多情况下(例如在拉巴斯),这已经很旧并且不再有效.
相反,必须天真地创建日期时间,然后将其本地化,如下所示:
b = la_paz.localize(datetime.datetime(2011, 03, 22, 5, 30))
print b, b.utcoffset()
now()似乎会自动进行本地化.
标签:pytz,timezone,python 来源: https://codeday.me/bug/20191102/1994179.html