如何解析ISO 8601格式的日期?我需要解析RFC 3339字符串,如"2008-09-03T20:56:35.450686Z"变成Python的datetime类型。我发现strptime在Python标准库中,但是不太方便。做这件事最好的方法是什么?
3 回答
![?](http://img1.sycdn.imooc.com/54584e120001811202200220-100-100.jpg)
吃鸡游戏
TA贡献1829条经验 获得超7个赞
这个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
添加回答
举报
0/150
提交
取消