2012-10-07 7 views
5

Ich habe einige Daten, das Format ist d/m/yyyy (z. B. 2/28/1987). Ich mag es im ISO-Format haben: 1987-02-28Wie kann ich Datum in ISO mit Python formatieren?

Ich denke, wir es auf diese Weise tun können, aber es scheint ein wenig schwer:

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

Gibt es eine andere Art und Weise zu tun es mit Python?

+0

Ich habe riesige Liste so dass meine erste Option wäre, einen Tabellenkalkulationseditor wie LibreOffice zu kopieren und einzufügen und die Formatzelle in o zu ändern rder, um das richtige Format einzustellen, aber das funktioniert nicht .. – Reveclair

Antwort

17

könnten Sie verwenden die datetime module:

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

oder als Laufcode:

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

+1 für 'isoformat()'. Ich wusste nie davon. – Blender

1

Was haben Sie fast ist, wie ich es schreiben würde, die einzige große Verbesserung, die ich vorschlagen kann, ist das gute alte split statt re.split verwenden, da Sie nicht einen regulären Ausdruck benötigen:

arr_str = str_date.split('/') 

Wenn Sie benötigt, um etwas komplizierter zu tun, würde ich empfehlen time.strftime, aber das ist deutlich mehr teurer als String Bashing.

6

würde ich das datetime Modul verwenden, um es zu analysieren:

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

'.isoformat()' on Datumsangaben verwendet die gleiche Formatierungszeichenfolge OOTB. :-) –

Verwandte Themen