datetime.fromisoformat 的文档示例引发无效的 isoformat 字符串错误

Mar*_*ram 4 python datetime python-3.x python-datetime

在Python 3.10.8中,如果我写

from datetime import datetime
print(datetime.fromisoformat('2011-11-04T00:05:23Z'))
Run Code Online (Sandbox Code Playgroud)

我收到错误

from datetime import datetime
print(datetime.fromisoformat('2011-11-04T00:05:23Z'))
Run Code Online (Sandbox Code Playgroud)

这是令人惊讶的,因为这个例子是直接取自datetime模块文档的:

>>> from datetime import datetime
# ...
>>> datetime.fromisoformat('2011-11-04T00:05:23Z')
datetime.datetime(2011, 11, 4, 0, 5, 23, tzinfo=datetime.timezone.utc)
Run Code Online (Sandbox Code Playgroud)

这是文档中的错误还是错误?

mat*_*tch 5

在 Python 3.11 之前,fromisoformat需要与isoformat.

Pythonisoformat不支持尾随Z作为 +00:00 的别名,因此会出现错误。

来自 3.10 文档:

注意 - 这不支持解析任意 ISO 8601 字符串 - 它仅用作 datetime.isoformat() 的逆操作 https://docs.python.org/3.10/library/datetime.html#datetime.datetime.fromisoformat

来自 >=3.11 文档:

在版本 3.11 中更改:以前,此方法仅支持 date.isoformat() 或 datetime.isoformat() 可以发出的格式:https://docs.python.org/3/library/datetime.html#datetime.datetime .fromisoformat