我正在尝试按以下方式在python 3.6中格式化日期时间,
datetime.datetime.strptime(date_string, "{Date}%Y-%m-%dT%H:%M:%S.%f%z")
但是,输入字符串{Date}2016-11-22T11:49:21.826-05:00
的格式化失败,并出现以下错误。
Traceback (most recent call last): File "./test-date.py", line 168, in get_date date_time_ = datetime.datetime.strptime(date_string, "{Date}%Y-%m-%dT%H:%M:%S.%f%z").replace(tzinfo=None) File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime tt, fraction = _strptime(data_string, format) File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime (data_string, format)) ValueError: time data '{Date}2016-11-22T11:49:21.826-05:00' does not match format '{Date}%Y-%m-%dT%H:%M:%S.%f%z'
答案 0 :(得分:0)
如果您不介意使用名为dateutil
的其他Python程序包,则可以执行以下操作:
from dateutil.parser import parse
ds = '2016-11-22T11:49:21.826-05:00'
print(parse(ds))
输出:
datetime.datetime(2016, 11, 22, 11, 49, 21, 826000, tzinfo=tzoffset(None, -18000))
答案 1 :(得分:0)
因为正确的馈送%z
的方式类似于-0500
而不是-05:00
。
>>> datetime.datetime.strptime('2016-11-22T11:49:21.826-0500', "%Y-%m-%dT%H:%M:%S.%f%z")
datetime.datetime(2016, 11, 22, 11, 49, 21, 826000, tzinfo=datetime.timezone(datetime.timedelta(-1, 68400)))