2016-08-11 3 views
-2

Ich möchte String in Datumsformat in Python konvertieren können. Aber einige von Tag und Monat werden auf 00 zugewiesenKonvertieren von Zeichenfolge zu Datum einige Werte fehlen Python

date = ['00-00-2001', '10-01-2014'] 

, als ich versuchte:

datetime.strptime(date[1], '%d-%m-%Y'), natürlich ist es funktioniert gut, aber tun datetime.strptime(date[0], '%d-%m-%Y'), bekomme ich folgende Fehlermeldung.

Zeitdaten '00 -00-2001' passen nicht-Format '% d-% m-%

+4

Was erwarten Sie im Falle eines schlechten Termins? – hgazibara

+1

Bedeutet 00-00-2001 wirklich den 1. Januar 2001 oder meint es etwas anderes? – vielmetti

Antwort

1

Nach Python Docs' Y:

% d Tag der Monat als eine Null gefüllte Dezimalzahl. 01, 02, ..., 31

% m Monat als Nullstellenzahl. 01, 02, ..., 12

Keiner von diesen akzeptiert 00 als gültigen String.

Siehe auch meine Antwort unter https://stackoverflow.com/a/38801552/1005215, die erklärt, wie Sie die parser von dateutil durch die Übergabe eines Standardparameters verwenden können. Führen

+0

Wie beantwortet das die Frage? Dem OP zu sagen, dass es nicht möglich ist, wird bereits vom Python-Interpreter erledigt. – Kartik

+0

@Kartik Der Python-Interpreter teilt dem OP nicht mit, warum die Zeichenfolge nicht mit dem Format übereinstimmt. –

+0

Ja, ich stehe richtig. "Dem OP zu sagen, dass es nicht einfach ist, hat der Python-Interpreter bereits gemacht". – Kartik

0

:

corrected_date = [] 
for d in dates: 
    components = d.split('-') 
    components = [str(c).zfill(2) if(int(c) > 0) else str(int(c) + 1).zfill(2) for c in components] 
    corrected_date.extend(['-'.join(components)]) 

Versuchen Sie nun strftime auf corrected_date.

Verwandte Themen