将时区缩写的非UTC时间字符串转换为python中的UTC时间,同时考虑夏令时

sna*_*ies 5 python utc pytz dst python-dateutil

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

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

我一直在尝试使用datetutil和pytz寻找方法,但没有任何运气.

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

string = "Jun 20, 4:00PM EDT" 
Run Code Online (Sandbox Code Playgroud)

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

更新:找到一些可能有助于更有经验的用户回答Q的参考资料.

从本质上讲,我会想象的解决方案做相反的一部分这个.

最终更新(重要)

取自dateutil docs示例.

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

解析("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))

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

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