猿问

如何解析ISO 8601格式的日期?

如何解析ISO 8601格式的日期?

我需要解析RFC 3339字符串,如"2008-09-03T20:56:35.450686Z"变成Python的datetime类型。

我发现strptime在Python标准库中,但是不太方便。

做这件事最好的方法是什么?


慕少森
浏览 1561回答 3
3回答

吃鸡游戏

这个Python-dateutil包不仅可以像问题中的那样解析rfc 3339日期时间字符串,还可以解析其他字符串。ISO 8601不符合RFC 3339的日期和时间字符串(例如没有UTC偏移量的字符串或仅表示日期的字符串)。>>> import dateutil.parser>>> dateutil.parser.parse('2008-09-03T20:56:35.450686Z') # RFC 3339 formatdatetime.datetime (2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())>>> dateutil.parser.parse('2008-09-03T20:56:35.450686')  # ISO 8601 extended formatdatetime.datetime(2008, 9, 3, 20, 56, 35, 450686)>>> dateutil.parser.parse('20080903T205635.450686')   # ISO 8601 basic formatdatetime.datetime(2008, 9, 3, 20, 56, 35, 450686)>>> dateutil.parser.parse('20080903')    # ISO 8601 basic format, date onlydatetime.datetime(2008, 9, 3, 0, 0)请注意,dateutil.parser故意作呕:它试图猜测格式,并在模棱两可的情况下做出不可避免的假设(只能手工定制)。因此,只有当您需要解析未知格式的输入,并且可以容忍偶尔的误读时,才可以使用它。Pypi的名字是python-dateutil,不是dateutil:pip install python-dateutil
随时随地看视频慕课网APP

相关分类

Python
我要回答