在Python中解析datetime。。?
我有一个系统(用Python开发),它接受各种格式的字符串datetime,并且必须解析它们。。当前的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 现在我需要一个通用解析器,它可以将这些日期时间格式转换为适当的日期时间对象 否则,我必须单独解析它们。所以请同时提供单独解析它们的方法(如果没有通用解析器) 您应该查看该软件包。正
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
安装它时,希望您认为它不是合法的软件包一样。