我从本地时间转换为 UTC 有什么问题

What is wrong with my conversion from local time to UTC

根据 timeanddate.com,目前芝加哥比 UTC 晚 5 小时。但是,我的 Python 应用有不同的想法:

import datetime
import pytz

    local_tz = pytz.timezone('America/Chicago')
    local_time = datetime.datetime(2015, 8, 6, 0, 0, tzinfo=local_tz)
    utc_time = local_time.astimezone(pytz.utc)
    print(local_time)
    print(utc_time)

2015-08-06 00:00:00-05:51
2015-08-06 05:51:00+00:00

我在 'America/Chicago' 和 'US/Central' 上得到了相同的结果。为什么偏移量是 -05:51 而不是 -05:00?

pytz 时区对象在使用前需要用特定时间进行初始化,而使用 tzinfo= 参数创建 datetime 不允许这样做。您必须使用 pytz 对象的 localize 方法将时区添加到 datetime.

>>> local_tz = pytz.timezone('America/Chicago')
>>> local_time = local_tz.localize(datetime.datetime(2015, 8, 6, 0, 0))
>>> print local_time
2015-08-06 00:00:00-05:00
>>> utc_time = local_time.astimezone(pytz.utc)
>>> print utc_time
2015-08-06 05:00:00+00:00