ベストアンサー1
isoparse
python-dateutilの関数
のpython-dateutilパッケージにはdateutil.parser.isoparse
質問にあるようなRFC 3339の日時文字列だけでなく、他の8601 規格RFC 3339 に準拠していない日付と時刻の文字列 (UTC オフセットがないものや、日付のみを表すものなど)。
>>> import dateutil.parser
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686Z') # RFC 3339 format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686') # ISO 8601 extended format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903T205635.450686') # ISO 8601 basic format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903') # ISO 8601 basic format, date only
datetime.datetime(2008, 9, 3, 0, 0)
python -dateutilパッケージには、dateutil.parser.parse
と比較するとisoparse
、おそらく厳密さは劣りますが、どちらも非常に寛容であり、渡された文字列を解釈しようとします。誤読の可能性を排除したい場合は、これらの関数のいずれかよりも厳密なものを使用する必要があります。
Python 3.7+の組み込みとの比較datetime.datetime.fromisoformat
dateutil.parser.isoparse
は完全な ISO-8601 フォーマットパーサーですが、Python ≤ 3.10 ではfromisoformat
意図的にサポートされていません。Python 3.11 では、有効な ISO 8601 のほぼすべての文字列をサポートします。この注意事項については、のドキュメントをfromisoformat
参照してください。(fromisoformat
この答え)。