时间错误地在Python中本地化

时间:2016-09-24 22:21:17

标签: python python-2.7 datetime localization

使用python我试图将日期时间值本地化为时区" America / Chicago"目前是-06:00。 我通过以下方式获得时区:

>>> import pytz
>>> tz = pytz.timezone("America/Chicago")
<DstTzInfo 'America/Chicago' CST-1 day, 18:00:00 STD>

当我将日期本地化时:

>>> my_date = tz.localize(datetime.now())
datetime.datetime(2016, 9, 24, 17, 4, 43, 439824, tzinfo=<DstTzInfo 'America/Chicago' CDT-1 day, 19:00:00 DST>)

注意本地化后的时区是错误的:

<DstTzInfo 'America/Chicago' CDT-1 day, 19:00:00 DST>

后来当我要求偏移量时,你可以看到它确认它有错误的偏移量:

>>> my_date.strftime("%z")
'-0500'

如果我使用astimezone,则完全相同:

>>>my_date
datetime.datetime(2016, 9, 24, 22, 15, 1, 620364, tzinfo=<UTC>)

>>>my_date.astimezone(tz)
datetime.datetime(2016, 9, 24, 17, 15, 1, 620364, tzinfo=<DstTzInfo 'America/Chicago' CDT-1 day, 19:00:00 DST>)

1 个答案:

答案 0 :(得分:0)

Btw芝加哥现在正在观察夏令时。所以-05.00是正确的抵消。默认情况下,Pytz时区具有标准时间,但本地化时可以根据日期考虑日间照明(如您的情况)。