2012-10-29 199 views
1

可能重複:
Parse date and format it using python?解析字符串日期在python

我很新的Python的。我有以下兩個字符串:

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

我想有可能是在Python提供任何日期解析LIB它可以完成上述兩個字符串解析到這樣的事情:

2012-10-29 12:57:08 

這樣我可以比較他們。請注意,比較應該能夠產生像整數比較那樣的結果。像1小於2,那麼以同樣的方式2012-10-29 12:57:082012-10-29 13:57:08

少是否有任何容易在Python這樣做呢?

在此先感謝。

+1

請參閱:http://stackoverflow.com/questions/2265357/parse-date-and-format-it-using-python。這是這個問題的重複,這反過來確定多個其他重複 –

回答

7

使用dateutil module一般日期解析:

>>> 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() method

>>> 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) 

然而要注意的是方法忽略時區!

+0

+1這是有效的。但是,如何比較兩個結果以找出哪一個更小或更大? – sriram

+1

@GroovyUser:和其他值一樣:'dt1

2

是的,time.strptime可以將文本轉換爲日期表示。從那裏你可以使用strftime打印它你喜歡的方式。

>>> 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) 
1

在Python中datetime模塊,其strptime功能(串解析),能做到這一點。

例如,你可以使用函數如下:

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

文檔here