5

由于时区缩写,我很难将非 UTC 时间的字符串表示形式转换为 UTC。

(更新:似乎时区缩写可能不是唯一的。如果是这样,也许我也应该考虑到这一点。

我一直在尝试使用 datetutil 和 pytz 寻找解决此问题的方法,但没有任何运气。

建议或解决方法将不胜感激。

string = "Jun 20, 4:00PM EDT" 

我想将其转换为 UTC 时间,并在适当的时候考虑夏令时。

更新:找到一些可以帮助更有经验的用户回答问题的参考资料。

从本质上讲,我会想象部分解决方案会与相反。

最终更新(重要)

取自dateutil 文档示例

一些基于 date 命令的简单示例,使用 TZOFFSET 字典提供 BRST 时区偏移量。

parse("Thu Sep 25 10:36:28 BRST 2003", tzinfos=TZOFFSETS) datetime.datetime(2003, 9, 25, 10, 36, 28, tzinfo=tzoffset('BRST', -10800))

parse("2003 10:36:28 BRST 25 Sep Thu", tzinfos=TZOFFSETS) datetime.datetime(2003, 9, 25, 10, 36, 28, tzinfo=tzoffset('BRST', -10800))

将此与此处的库相结合。你将有一个解决这个问题的方法。

4

1 回答 1

5

使用Nas Banov 出色的字典将时区缩写映射到 UTC 偏移量:

import dateutil
import pytz

# timezone dictionary built here: https://stackoverflow.com/a/4766400/366335
# tzd = {...}

string = 'Jun 20, 4:00PM EDT'
date = dateutil.parser.parse(string, tzinfos=tzd).astimezone(pytz.utc)
于 2012-06-21T19:03:47.243 回答