从 Python 中的 dateutil.parser.parse 获取时区
Getting timezone from dateutil.parser.parse in Python
正在尝试使用时区信息解析日期时间字符串并获取 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
作为偏移量?
If tzinfo is None, returns None
在您的代码中,dt.tzinfo
是 None
,因此时区信息未被 parse_date
解析为 dt
。您的日期时间 dt
是 "naive"(没有时区信息)。
根据 dateutil docs,您可以将自己的时区信息作为 tzoffset
或 tzfile
:
传递给 parse_date
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)
正在尝试使用时区信息解析日期时间字符串并获取 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
作为偏移量?
If tzinfo is None, returns None
在您的代码中,dt.tzinfo
是 None
,因此时区信息未被 parse_date
解析为 dt
。您的日期时间 dt
是 "naive"(没有时区信息)。
根据 dateutil docs,您可以将自己的时区信息作为 tzoffset
或 tzfile
:
parse_date
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)