因此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实际上会按预期进行呢?
答案 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'