【发布时间】:2011-04-02 20:09:01
【问题描述】:
我有一个这样创建的日期时间对象:
tm = datetime.datetime.strptime('2010 Aug 04 14:15:16', '%Y %b %d %H:%M:%S')
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16)
然后我像这样设置时区:
tm.replace(tzinfo=pytz.timezone('UTC'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<UTC>)
最终,我将时区更改为美国/太平洋,如下所示:
>>> tm = tm.astimezone(pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 7, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)
这是正确的。但如果我要走向另一个方向:
>>> tm = tm.replace(tzinfo =pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
如您所见,使用带有 PST 时区的 replace() 会错误地假定它不是夏令时。因此,当我转换为 UTC 时,它会增加 8 小时而不是 7 小时。
为什么要这样做,我该如何改变它,让它做我想做的事情(是否正确实现 DST)?
【问题讨论】:
-
我也遇到过 Python 时区问题...
标签: python