2017-08-31 135 views
0

试图解析日期时间字符串时区信息,并获得UTC偏移获取时区从dateutil.parser.parse在Python

from dateutil.parser import parse as parse_date 
s = '2017-08-28 06:08:20,488 CDT' 
dt = parse_date(s) 
print dt.utcoffset() 
None 

为什么UTCOFFSET返回None,而不是-5作为偏移?

回答

2

datetime docs

如果tzinfo是None,返回无

在你的代码,dt.tzinfoNone,所以时区信息不被parse_date解析成dt。您的日期时间dt是“天真”(没有时区信息)。

按照该dateutil docs,你可以通过你自己的时区信息parse_date无论是作为tzoffsettzfile

tzinfos = {"CDT": -21600} 
dt = parse_date('2017-08-28 06:08:20 CDT', tzinfos=tzinfos) 
dt.tzinfo #tzoffset('CDT', -21600) 

from dateutil import tz 
tzinfos = {"CDT": tz.gettz('US/Central')} 
dt = parse_date('2017-08-28 06:08:20 CDT', tzinfos=tzinfos) 
dt.tzinfo #tzfile('/usr/share/zoneinfo/US/Central') 

或者你可以编码区偏移到字符串:

dt = parse_date('2017-08-28 06:08:20-06:00') 
dt.tzinfo #tzoffset(None, -21600)