我需要将 "2008-09-03T20:56:35.450686Z"
之类的 RFC 3339 字符串解析为 Python 的 datetime
类型。
我在Python标准库中找到了 strptime
,但不是很方便。
做这个的最好方式是什么?
原文由 Alexander Artemenko 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要将 "2008-09-03T20:56:35.450686Z"
之类的 RFC 3339 字符串解析为 Python 的 datetime
类型。
我在Python标准库中找到了 strptime
,但不是很方便。
做这个的最好方式是什么?
原文由 Alexander Artemenko 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
isoparse
来自 python-dateutil 的 函数python-dateutil 包有
dateutil.parser.isoparse
不仅可以解析问题中的 RFC 3339 日期时间字符串,还可以解析不符合 RFC 3339 的其他 ISO 8601 日期和时间字符串(例如那些没有 UTC 偏移量,或仅代表日期的偏移量)。python-dateutil 包也有
dateutil.parser.parse
。与isoparse
相比,它可能不太严格,但它们都非常宽容,并且会尝试解释您传入的字符串。如果您想消除任何误读的可能性,您需要使用比这两个函数中的任何一个都严格的东西。与Python 3.7+的内置比较
datetime.datetime.fromisoformat
dateutil.parser.isoparse
是完整的 ISO-8601 格式解析器,但在 Python ≤ 3.10 中fromisoformat
故意 _不是_。在 Python 3.11 中,fromisoformat
支持有效 ISO 8601 中的几乎所有字符串。请参阅fromisoformat
的文档了解此警告。 (见 这个答案)。