在python中将字符串解析为Dates

Parsing the string to Dates in python

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Parse date and format it using python?

我对Python很陌生。我有以下两条线:

1
2
Mon, 29 Oct 2012 13:07:07 GMT
2012-10-29 12:57:08

我希望在python中可以有任何日期解析lib,它可以将上面的两个字符串解析为如下类型:

1
2012-10-29 12:57:08

以便我可以比较它们。注意,比较应该能够产生类似整数比较的结果。同1小于2一样,2012-10-29 12:57:08也小于2012-10-29 13:57:08

在python中有什么容易做到的吗?

事先谢谢。


使用dateutil模块进行一般数据分析:

1
2
3
4
5
>>> from dateutil.parser import parse
>>> parse('Mon, 29 Oct 2012 13:07:07 GMT')
datetime.datetime(2012, 10, 29, 13, 7, 7, tzinfo=tzutc())
>>> parse('2012-10-29 12:57:08')
datetime.datetime(2012, 10, 29, 12, 57, 8)

datetime.datetime对象可以通过各种方式进行比较。

如果知道要分析的每个日期字符串的确切格式,也可以使用datetime.datetime.strptime()方法更明确地进行分析:

1
2
3
>>> import datetime
>>> datetime.datetime.strptime('Mon, 29 Oct 2012 13:07:07 GMT', '%a, %d %b %Y %H:%M:%S %Z')
datetime.datetime(2012, 10, 29, 13, 7, 7)

但是请注意,该方法忽略时区!


是的,time.strptime可以将文本转换为日期表示。从那里你可以使用strftime打印你喜欢的。

1
2
3
4
5
6
>>> a = '2012-10-29 12:57:08'
>>> time.strptime(a, '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2012, tm_mon=10, tm_mday=29, tm_hour=12, tm_min=57, tm_sec=8, tm_wday=0, tm_yday=303, tm_isdst=-1)
>>> b = 'Mon, 29 Oct 2012 13:07:07 GMT'
>>> time.strptime(b, '%a, %d %b %Y %H:%M:%S %Z')
time.struct_time(tm_year=2012, tm_mon=10, tm_mday=29, tm_hour=13, tm_min=7, tm_sec=7, tm_wday=0, tm_yday=303, tm_isdst=0)


python中的datetime模块及其strptime函数(字符串分析)可以做到这一点。

例如,您可以使用如下函数:

1
2
somestring = '2004-03-13T03:00:00Z'
result = datetime.datetime.strptime(somestring, '%Y-%m-%dT%H:%M:%SZ')

文件在这里。