从python中的dateutil.parser.parse获取时区

时间:2017-08-31 18:58:43

标签: python python-dateutil

尝试使用时区信息解析日期时间字符串并获取utc偏移量

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作为偏移?

1 个答案:

答案 0 :(得分:4)

来自datetime docs

  

如果tzinfo为None,则返回None

在您的代码中,dt.tzinfoNone,因此时区信息未被parse_date解析为dt。您的日期时间dt是“天真的”(没有时区信息)。

根据dateutil docs,您可以将自己的时区信息作为parse_datetzoffset传递给tzfile

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)