我从本地时间转换为 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
根据 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