Python 规范化日期时间对象

Python 规范化日期时间对象,python,datetime,pytz,Python,Datetime,Pytz,我正在做一些约会魔法,试图弄明白为什么时间有点短 2014年6月3日下午3点(UTC): >>> chicago = pytz.timezone('US/Central') >>> chicago.localize(datetime(2014,6,3,15,0,0)).astimezone(pytz.utc) datetime.datetime(2014, 6, 3, 20, 0, tzinfo=<UTC>) >>> chica

我正在做一些约会魔法,试图弄明白为什么时间有点短

2014年6月3日下午3点(UTC):

>>> chicago = pytz.timezone('US/Central')
>>> chicago.localize(datetime(2014,6,3,15,0,0)).astimezone(pytz.utc)
datetime.datetime(2014, 6, 3, 20, 0, tzinfo=<UTC>)
>>> chicago.localize(datetime(2014,12,2,15,0,0)).astimezone(pytz.utc)
datetime.datetime(2014, 12, 2, 21, 0, tzinfo=<UTC>)
芝加哥=pytz.timezone('US/Central') >>>芝加哥.本地化(日期时间(2014,6,3,15,0,0)).astimezone(pytz.utc) datetime.datetime(2014,6,3,20,0,tzinfo=) 2014年12月2日下午3点(UTC):

>>> chicago = pytz.timezone('US/Central')
>>> chicago.localize(datetime(2014,6,3,15,0,0)).astimezone(pytz.utc)
datetime.datetime(2014, 6, 3, 20, 0, tzinfo=<UTC>)
>>> chicago.localize(datetime(2014,12,2,15,0,0)).astimezone(pytz.utc)
datetime.datetime(2014, 12, 2, 21, 0, tzinfo=<UTC>)
芝加哥.本地化(日期时间(2014,12,2,15,0,0)).astimezone(pytz.utc) datetime.datetime(2014,12,2,21,0,tzinfo=) 第二个示例中的小时是21,而第一个示例中的小时是20。我想可能日期没有正常化,所以我尝试了以下方法:

>>> chicago.normalize(chicago.localize(datetime(2014,12,2,15,0,0))).astimezone(pytz.utc)
datetime.datetime(2014, 12, 2, 21, 0, tzinfo=<UTC>)
芝加哥.标准化(芝加哥.本地化(日期时间(2014,12,2,15,0,0)).astimezone(pytz.utc) datetime.datetime(2014,12,2,21,0,tzinfo=) 还是21岁。这是怎么回事?

夏令时

在第一个案例中(6月3日),芝加哥实行中央夏令时。UTC的偏移量为五小时

>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'
>>> clt=chicago.localize(datetime(2014,6,3,15,0,0))
>>> clt.strftime(fmt)
'2014-06-03 15:00:00 CDT-0500'
                     ^^^^^^^^
在第二种情况下(12月2日),芝加哥处于中央标准时间。UTC的偏移量为6小时

>>> clt=chicago.localize(datetime(2014,12,2,15,0,0))
>>> clt.strftime(fmt)
'2014-12-02 15:00:00 CST-0600'
                     ^^^^^^^^
您对
normalize()
的调用在这里没有帮助,因为您没有对跨越DST边界的本地时间执行日期或时间算术