2017-02-02 6 views
0

ich die folgende Störung erhalte:Python: Wertfehler - Zeit- und Datumsformatfehler

ValueError: time data 'Feb 1, 2017 0:03 pm' does not match format '%b %d, %Y %I:%M %p' 

Hier ist der Code:

from datetime import datetime 

latest_datetime = 'Feb 1, 2017 0:03 pm'  
datetime_obj = datetime.strptime(latest_datetime, "%b %d, %Y %I:%M %p") 

Ich bin nicht in der Lage, um herauszufinden, warum ich den Fehler.

Antwort

2

Eine 12-Stunden-Uhr hat keine 0 Stunde; %I nur 1 bis entsprechen zu 12. Ihre Zeitstempel in ihm eine unmögliche Zeit hat:

0:03 pm 

Vom strftime() and strptime() Behavior documentation:

%I
Hour (12-hour clock) as a zero-padded decimal number.
01, 02, ..., 12

Unter der Annahme, 0 wirklich 12 ist, könnten Sie diese Reparatur durch den ' 0:' ersetzen mit '12:' (beachten Sie die führende Platz für die Null!):

>>> from datetime import datetime 
>>> latest_datetime = 'Feb 1, 2017 0:03 pm' 
>>> datetime.strptime(latest_datetime.replace(' 0:', '12:'), "%b %d, %Y %I:%M %p") 
datetime.datetime(2017, 2, 1, 12, 3) 

Es spielt keine Rolle, ob Sie zwischen dem Jahr und der Stunde ein oder zwei Leerzeichen haben, die Zeichenfolge wird in beiden Richtungen geparst.

+0

Sie haben Recht, ich habe eine schlechte/gehetzt Diagnose auf der Konsole spielen. –