在Python中解析日期时间..?

发布于 2021-01-29 19:34:33

我有一个系统(用Python开发),它接受 datetime作为各种格式的字符串 ,我必须 解析 它们。当前datetime字符串格式是:

Fri Sep 25 18:09:49 -0500 2009

2008-06-29T00:42:18.000Z

2011-07-16T21:46:39Z

1294989360

现在我想要一个可以在适当的datetime对象中转换任何这些datetime格式的 通用解析器

否则,我必须单独分析它们。因此,还请提供单独解析它们的方法(如果没有通用解析器)。

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

    正如@TimPietzcker所建议的那样,dateutil包是必经之路,它可以正确,自动地处理前三种格式:

    >>> from dateutil.parser import parse
    >>> parse("Fri Sep 25 18:09:49 -0500 2009")
    datetime.datetime(2009, 9, 25, 18, 9, 49, tzinfo=tzoffset(None, -18000))
    >>> parse("2008-06-29T00:42:18.000Z")
    datetime.datetime(2008, 6, 29, 0, 42, 18, tzinfo=tzutc())
    >>> parse("2011-07-16T21:46:39Z")
    datetime.datetime(2011, 7, 16, 21, 46, 39, tzinfo=tzutc())
    

    它似乎采用了unixtime格式,但是幸运的datetime.datetime是该任务的标准是:

    >>> from datetime import datetime
    >>> datetime.utcfromtimestamp(float("1294989360"))
    datetime.datetime(2011, 1, 14, 7, 16)
    

    使用此函数可以轻松处理所有4种格式:

    from dateutil.parser import parse
    from datetime import datetime
    
    def parse_time(s):
        try:
            ret = parse(s)
        except ValueError:
            ret = datetime.utcfromtimestamp(s)
        return ret
    


知识点
面圈网VIP题库

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

去下载看看