Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中解析datetime。。?_Python_Datetime_Format - Fatal编程技术网

在Python中解析datetime。。?

在Python中解析datetime。。?,python,datetime,format,Python,Datetime,Format,我有一个系统(用Python开发),它接受各种格式的字符串datetime,并且必须解析它们。。当前的datetime字符串格式如下: Fri Sep 25 18:09:49 -0500 2009 2008-06-29T00:42:18.000Z 2011-07-16T21:46:39Z 1294989360 现在我需要一个通用解析器,它可以将这些日期时间格式转换为适当的日期时间对象 否则,我必须单独解析它们。所以请同时提供单独解析它们的方法(如果没有通用解析器) 您应该查看该软件包。正

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

Fri Sep 25 18:09:49 -0500 2009

2008-06-29T00:42:18.000Z

2011-07-16T21:46:39Z

1294989360
现在我需要一个通用解析器,它可以将这些日期时间格式转换为适当的日期时间对象


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

您应该查看该软件包。

正如@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())
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

尤其是
dateutil.parser.parse()
thanx的答案。。!!。。但有一件事..“dateutil.parser.parse”正在解析前3种日期格式..但它无法解析最后一种日期格式(这是一个长值)…它显示“超出范围的年份”异常。。。但是python内置的datetime模块能够解析这个长值..为什么会这样..实际上这是我已经做过的,当@TimPietzcker建议的时候..你可以在评论中看到。。!!。。但是thanx的回答(以及代码描述)。。!!要安装dateutil:
pip安装python dateutil
。就像他们不提供如何通过
pip
安装它时,希望您认为它不是合法的软件包一样。