编程语言
首页 > 编程语言> > python-pytz:为什么这些不同的方法给出不同的UTC偏移量?

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