如何在Python中使用UTC偏移量解析时区?

mik*_*ike 6 python datetime

假设我有一个像"2009-08-18 13:52:54-04"这样的时区.我可以使用这样的一行解析大部分内容:

datetime.strptime(time_string, "%Y-%m-%d %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)

但是,我无法让时区工作.有一个%Z处理文本时区("EST","UTC"等),但我没有看到任何可以解析"-04"的东西.

con*_*nny 23

也许你可以使用dateutil.parser.parsewiki.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))
Run Code Online (Sandbox Code Playgroud)

(这个问题是否重复?)


Daw*_*uss 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)
Run Code Online (Sandbox Code Playgroud)

我也对更优雅的解决方案感兴趣。

  • 这是一个相当幼稚的解决方案。它确实有效,但是当您在白天节省时间和不使用它的时间工作时,您会遇到丑陋的问题。最好使用内置对象。 (3认同)