为什么即使格式匹配,{date}2016-11-22T11:49:21.826-05:00的python日期时间也会失败

为什么即使格式匹配,{date}2016-11-22T11:49:21.826-05:00的python日期时间也会失败,python,python-3.x,datetime,Python,Python 3.x,Datetime,我试图在Python3.6中格式化日期时间,如下所示: datetime.datetime.strptime(date_string, "{Date}%Y-%m-%dT%H:%M:%S.%f%z") 但是,输入字符串{Date}2016-11-22T11:49:21.826-05:00的格式设置失败,出现以下错误 如果您不介意使用名为dateutil的附加Python包,可以执行以下操作: from dateutil.parser import parse ds = '2016-11-22T1

我试图在Python3.6中格式化日期时间,如下所示:

datetime.datetime.strptime(date_string, "{Date}%Y-%m-%dT%H:%M:%S.%f%z")
但是,输入字符串
{Date}2016-11-22T11:49:21.826-05:00的格式设置失败,出现以下错误


如果您不介意使用名为
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))

如果您不介意使用名为
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))

因为馈送
%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)))

因为馈送
%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)))

Python 3.7中添加了通过
strtime()
%z
格式解析带有冒号的时区偏移量的功能。在3.6中,它需要类似于
-0500
的内容。Python 3.7中增加了通过
strtime()
%z
格式解析带有冒号的时区偏移量的功能。在3.6中,它期望类似于
-0500