我正在做一些约会时间魔术,试图弄清楚为什么时间略有减少。
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>)
2014年12月2日,中部时间下午3点(UTC):
>>> chicago.localize(datetime(2014,12,2,15,0,0)).astimezone(pytz.utc)
datetime.datetime(2014, 12, 2, 21, 0, tzinfo=<UTC>)
第二个例子中的小时数是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>)
仍然是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的时差为六个小时。
>>> clt=chicago.localize(datetime(2014,12,2,15,0,0))
>>> clt.strftime(fmt)
'2014-12-02 15:00:00 CST-0600'
^^^^^^^^
您的呼叫在normalize()
这里无济于事,因为您没有对跨越DST边界的本地时间进行日期或时间算术运算。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句