python datetime模块中的ISO8601格式支持

时间:2018-10-18 23:40:47

标签: python datetime iso8601

我已经阅读了很多关于在Python中解析ISO8601的问题,但其中大多数使用了外部依赖关系。 然后我碰到了这个问题,

How to parse an ISO 8601-formatted date?

它说明python不支持iso8601格式,但是答案已经3岁了。

我需要在不使用任何外部依赖项的情况下解析该日期,

from datetime import datetime
app_login = "1996-12-19T16:39:57+08:00"
parse_app_login = datetime.strptime(x,"%Y-%m-%dT%H:%M:%S%z")
print(parse_app_login)

我收到错误消息:

ValueError: time data '1996-12-19T16:39:57+08:00' does not match format '%Y-%m-%dT%H:%M:%S%z'

我想知道为什么python不支持iso8601格式吗?

1 个答案:

答案 0 :(得分:0)

请注意,Python 3.7支持ISO8601 UTC偏移量格式,

From Docs

  

版本3.7中的更改:将%z指令提供给   strptime()方法,UTC偏移量可以使用冒号作为分隔符   在几小时,几分钟和几秒钟之间。例如,“ + 01:00:00”将是   解析为一个小时的偏移量。另外,提供“ Z”是   等同于“ +00:00”。

使用Python 3.7.0(v3.7.0:1bf9cc5093,Jun 27 2018,04:06:47),

>>> from datetime import datetime
>>> x = "2018-10-18T16:39:57+08:00"
>>> y = datetime.strptime(x,"%Y-%m-%dT%H:%M:%S%z")
>>> print(y)

输出

2018-10-18 16:39:57+08:00