0

我一直在与谷歌和 SO 撞头,却一无所获,但我确信它已经被回答了一百次,只是被埋没了。

我从肥皂服务接收时间,需要将其转换为时区偏移中指定的时间,所以

2014-02-06 13:30:00-05:00

应该

2014-02-06 08:30:00

所以我可以格式化并显示事件的正确时间。

我一直在玩 dateutil 和 pytz 无济于事。谁能指出我应该看的地方?我发现的所有内容都会更改时区信息,但不会将小时更改为它所属的位置。

4

1 回答 1

4

dateutil直接处理格式:

from dateutil import parser

dt = parser.parse('2014-02-06 13:30:00-05:00')

现在您有了一个时区感知datetime.datetime()值,包括将其显示为 UTC ISO8601 时间戳:

from dateutil import tz

print dt.astimezone(tz.tzutc()).isoformat(' ')

这用于datetime.datetime.astimezone()将时区感知datetime值转换为 UTC 时区。

演示:

>>> from dateutil import parser
>>> from dateutil import tz
>>> dt = parser.parse('2014-02-06 13:30:00-05:00')
>>> print dt.astimezone(tz.tzutc()).isoformat(' ')
2014-02-06 18:30:00+00:00

这包括时区偏移量(的+00:00),如果需要,您可以使用该datetime.datetime.strftime()方法以不同的方式格式化字符串。

于 2014-02-06T15:35:26.370 回答