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

Ram*_*ngh 42 python format datetime

我有一个系统(用Python开发),它接受日期时间作为VARIOUS格式的字符串,我必须解析 它们.目前日期时间字符串格式是:

Fri Sep 25 18:09:49 -0500 2009

2008-06-29T00:42:18.000Z

2011-07-16T21:46:39Z

1294989360
Run Code Online (Sandbox Code Playgroud)

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

否则,我必须单独解析它们.所以请同时提供单独解析它们的方法(如果没有通用解析器).. !!

Kim*_*ais 57

正如@TimPietzcker建议的那样,dateutil包是可行的方法,它可以正确自动地处理前3种格式:

>>> 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())
Run Code Online (Sandbox Code Playgroud)

它看起来像是unixtime格式,但幸运的是标准datetime.datetime适用于任务:

>>> from datetime import datetime
>>> datetime.utcfromtimestamp(float("1294989360"))
datetime.datetime(2011, 1, 14, 7, 16)
Run Code Online (Sandbox Code Playgroud)

制作一个处理所有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
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 15

你应该看一下这个dateutil包.

  • 特别是`dateutil.parser.parse()` (7认同)