如何在Python中解析带UTC偏移的时区?

7 投票
4 回答
11978 浏览
提问于 2025-04-15 13:43

假设我有一个时间格式,比如“2009-08-18 13:52:54-04”。我可以用下面这行代码来解析大部分内容:

datetime.strptime(time_string, "%Y-%m-%d %H:%M:%S")

不过,我无法处理时区部分。虽然有一个%Z可以处理像“EST”、“UTC”这样的文字时区,但我找不到可以解析“-04”这种格式的东西。

4 个回答

3

使用 Babel,特别是 parse_datetime 这个功能。

24

也许你可以使用 dateutil.parser.parse 这个方法?这个方法在 wiki.python.org/WorkingWithTime 上也有提到。

>>> from dateutil.parser import parse
>>> parse("2009-08-18 13:52:54-04")
datetime.datetime(2009, 8, 18, 13, 52, 54, tzinfo=tzoffset(None, -14400))

(这个问题是重复的吗?)

0

我最近也遇到了同样的问题,后来我用这段代码解决了它:

gmt_offset_str = time_string[-3:]
gmt_offset_seconds = int(gmt_offset_str)*60*60
timestamp = time.strptime(time_string[:-4], '%Y-%m-%d %H:%M:%S')
return time.localtime(time.mktime(timestamp)-gmt_offset_seconds)

我也想知道有没有更好的解决办法。

撰写回答