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



试图用时区信息解析日期时间字符串并获取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())  # prints `None`

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

来自DateTime文档:

如果没有tzinfo,请返回无

在您的代码中,dt.tzinfoNone,因此parse_date不会将TimeZone信息解析为dt。您的DateTime dt是"天真"(没有时区信息)。

根据Dateutil文档,您可以将自己的时区信息传递给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)

相关内容

  • 没有找到相关文章

最新更新