【发布时间】:2020-10-17 09:26:50
【问题描述】:
我在 Python 中手动构造一个 datetime 对象:
>>> import datetime
>>> import pytz
>>> dt = datetime.datetime(
... 2020, 4, 3, 12, 0, 0,
... tzinfo=pytz.timezone('America/Chicago')
... )
>>> str(dt)
'2020-04-03 12:00:00-05:51'
>>>
另一方面:
>>> naive = datetime.datetime(2020, 4, 3, 12, 0, 0,)
>>> pytz.timezone('America/Chicago').localize(naive)
datetime.datetime(2020, 4, 3, 12, 0, tzinfo=<DstTzInfo 'America/Chicago' CDT-1 day, 19:00:00 DST>)
>>> dt = pytz.timezone('America/Chicago').localize(naive)
>>> str(dt)
'2020-04-03 12:00:00-05:00'
>>>
为什么时区偏移量在第一个代码 sn-p 中是“-05:51”,而在第二个代码中是“-05:00”。由于夏令时在 2020 年 4 月 3 日在美国/芝加哥有效,因此它们都应显示“-05:00”。
【问题讨论】:
-
看看
dateutil,你可以避免那里的“本地化问题”。参见例如here 举个例子 ;-)