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

时间:2012-06-21 17:52:28

标签: python utc dst pytz python-dateutil

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

(更新:似乎是timezone abbreviations may not be unique。如果是这样,也许我也应该考虑将此考虑在内。

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

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

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

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

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

基本上,我会想象解决方案的一部分与this相反。

最终更新(重要)

取自dateutil docs examples

一些基于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))

             

解析(“2003年9月25日星期五10:36:28 BRST”,tzinfos = TZOFFSETS)       datetime.datetime(2003,9,25,10,36,28,                         tzinfo = tzoffset('BRST',-10800))

    
  

将其与库such as found here.相结合,您就可以找到解决此问题的方法。

1 个答案:

答案 0 :(得分:5)

Nas Banov's excellent dictionary映射时区缩写用于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)