我将"2019-04-05T16:55:26Z"
提供给Python 3的datetime.datetime.fromisoformat
,并得到Invalid isoformat string
,尽管没有Z也可以使用相同的字符串。ISO 8601允许Z -https://en.wikipedia.org/wiki/ISO_8601
$ python3
Python 3.7.2 (default, Feb 12 2019, 08:15:36)
>>> datetime.fromisoformat("2019-04-05T16:55:26Z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Invalid isoformat string: '2019-04-05T16:55:26Z'
>>> datetime.fromisoformat("2019-04-05T16:55:26")
datetime.datetime(2019, 4, 5, 16, 55, 26)
4条答案
按热度按时间rbpvctlc1#
我刚刚查看了Python 3文档,它并不打算解析任意的ISO 8601格式字符串:
注意事项:这不支持解析任意ISO 8601字符串-它仅用作
datetime.isoformat()
的逆运算。dgjrabp22#
如果您已经知道API响应的格式,则可以用途:
根据需要进行调整,例如,如果字符串不包含毫秒等。
否则,按照python官方文档的建议,使用
dateutil
包:https://dateutil.readthedocs.io/en/stable/parser.html#dateutil.parser.isoparseb0zn9rqh3#
现在,3.11支持正确的ISO格式(包括时区
https://docs.python.org/3.11/library/datetime.html#datetime.datetime.fromisoformat
xqkwcwgp4#
很简单。去掉最后一个字母Z。