你怎么知道哪个pyTZ实际上会按预期进行?

时间:2015-03-21 22:42:54

标签: python python-2.7 pytz

因此shell中的以下代码很好地说明了问题。正如我写的那样,它大约是17:32(因此5:32)但是没有意义的是为什么?

 >>> d = datetime.datetime(2015,3,15,13,0,0,tzinfo=pytz.timezone('America/Detroit'))
 >>> d.isoformat()
 '2015-03-15T13:00:00-05:32'

 >>> d = datetime.datetime(2015,3,15,13,0,0,tzinfo=pytz.timezone('US/Eastern'))
 >>> d.isoformat()
 '2015-03-15T13:00:00-04:56'

最后这个有效,但我不明白为什么。

 >>> d = datetime.datetime(2015,3,15,13,0,0,tzinfo=pytz.timezone('EST'))
 >>> d.isoformat()
 '2015-03-15T13:00:00-05:00'

你怎么知道哪个TZ实际上会按预期进行呢?

1 个答案:

答案 0 :(得分:3)

您无法通过将值传递给tzinfo=来创建日期时间。在您的情况下,正确的方法是创建一个天真的日期时间并将其本地化:

>>> d = datetime.datetime(2015,3,15,13,0,0)
>>> pytz.timezone('EST').localize(d).isoformat()
'2015-03-15T13:00:00-05:00'

类似地:

>>> pytz.timezone('US/Eastern').localize(d).isoformat()
'2015-03-15T13:00:00-04:00'
>>> pytz.timezone('America/Detroit').localize(d).isoformat()
'2015-03-15T13:00:00-04:00'