2016-05-28 1 views
0

Während ich versuchte, String in Datetime zu konvertieren, begegnete ich folgendes:Wie konvertiert man String in Datetime-Objekt in Python für Jahre 2070 und höher?

S='30-01-50' 
datetime.datetime.str 
>>datetime.date(2050, 1, 30) 

jedoch

S='30-01-70' 
datetime.datetime.strptime(S,"%d-%m-%y").date() 
>>datetime.date(1970, 1, 30) 

Warum nicht 2070?. Wie berechnet man solche Datetime-Werte?

+0

Ist hier nicht das Problem, dass Ihre Zeichenfolge nicht eindeutig ist? Python unterstützt Jahre bis 9999, aber 1970 ist * was Sie bekommen sollten * nur für 70. Woher kommt der Input und warum kann er nicht das ganze Jahr beinhalten? – jonrsharpe

+0

Ich habe versucht S = '30 -01-1970 ', ich warf den Fehler: Traceback (letzten Aufruf zuletzt): Datei "", Zeile 1, in Datei "/usr/lib/python2.7/_strptime .py ", Zeile 328, in _strptime data_string [found.end():]) ValueError: nicht konvertierte Daten bleiben: 70 –

+0

Sie haben das Muster nicht von% y nach% Y geändert. Warum? – jonrsharpe

Antwort

0

Eine Kurzübersicht finden Sie unter this answer.

Schnelle Antwort: Verwenden Sie keine zweistelligen Jahre, verwenden Sie vierstellige Jahre und die %Y Spezifizierer.

Verwandte Themen