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

发布于 2021-02-02 23:23:32

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

我已经strptimePython标准库中找到了,但这不是很方便。

做这个的最好方式是什么?

关注者
0
被浏览
179
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    python-dateutil包可以解析不仅RFC 3339日期时间字符串像在的问题,还包括其他ISO 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)
    

    请注意,这dateutil.parser.isoparse可能比更严格的方法更严格dateutil.parser.parse,但是它们两者都是相当宽容的,并且会尝试解释你传入的字符串。如果要消除任何误读的可能性,则需要使用比这两种方法都严格的方法功能。

    Pypi名称是python-dateutil,不是dateutil(感谢code3monk3y):

    pip install python-dateutil
    

    如果你使用的是Python 3.7,请查看有关的答案datetime.datetime.fromisoformat。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看