2012-10-07 42 views
5

我有一些日期的格式是d/m/yyyy(例如1987年2月28日)。 我想有它的ISO格式爲:1987年2月28日如何使用Python在ISO中格式化日期?

我認爲我們能做到這樣,但似乎有點沉重:

str_date = '2/28/1987' 
arr_str = re.split('/', str_date) 
iso_date = arr_str[2]+'-'+arr_str[0][:2]+'-'+arr_str[1] 

是否有另一種方式來做到它與Python?

+0

我有巨大的名單因此,我的第一個選擇是複製/粘貼電子表格編輯器(如LibreOffice)並更改o中的格式單元格rder設置正確的格式,但不起作用。# – Reveclair

回答

17

您可以使用datetime module

datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat() 

,或者爲運行代碼:

>>> import datetime 
>>> str_date = '2/28/1987' 
>>> datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat() 
'1987-02-28' 
+2

對於'isoformat()'+1。我從來不知道那個。 – Blender

1

你有什麼是非常接近我會怎麼寫呢,唯一的重大改進,我可以建議是使用普通的舊split,而不是re.split,因爲你並不需要一個正則表達式:

arr_str = str_date.split('/') 

如果您做任何事情變得更復雜呀,我會建議time.strftime需要,但是這不是字符串撲顯著昂貴。

6

我會用datetime模塊解析它:

>>> from datetime import datetime 
>>> date = datetime.strptime('2/28/1987', '%m/%d/%Y') 
>>> date.strftime('%Y-%m-%d') 
'1987-02-28' 
+0

'.isoformat()'日期使用相同的格式化字符串OOTB。 :-) –