Einführung
Die datetime- und time-Module von Python enthalten beide eine strptime()-Klassenmethode zum Konvertieren von Zeichenketten in Objekte.
In diesem Artikel verwenden Sie strptime(), um Zeichenketten in datetime-Objekte umzuwandeln, und struct_time().
Konvertiere einen String mithilfe von datetime.strptime() in ein Datetime-Objekt.
Die Syntax der Methode datetime.strptime() lautet wie folgt:
datetime.strptime(date_string, format)
Die Methode `datetime.strptime()` gibt ein Datetime-Objekt zurück, das dem vom Format analysierten Datumsstring entspricht. Beide Argumente sind erforderlich und müssen vom Typ String sein.
Weitere Details zu den Formatierungsbefehlen, die in datetime.strptime() verwendet werden, finden Sie in der Python-Dokumentation unter den Formatierungscodes für strftime() und strptime().
Beispiel zum Konvertieren eines Strings in ein datetime.datetime()-Objekt
Das folgende Beispiel konvertiert eine Datums-/Zeitzeichenfolge in ein datetime.datetime()-Objekt und gibt den Klassennamen und den Wert des resultierenden Objekts aus:
from datetime import datetime
datetime_str = '09/19/22 13:55:26'
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')
print(type(datetime_object))
print(datetime_object) # printed in default formatDie Ausgabe lautet:
<class 'datetime.datetime'>
2022-09-19 13:55:26Beispiel zum Konvertieren eines Strings in ein datetime.date()-Objekt
Das folgende Beispiel konvertiert eine Datumszeichenfolge in ein datetime.date()-Objekt und gibt den Klassentyp und den Wert des resultierenden Objekts aus:
from datetime import datetime
date_str = '09-19-2022'
date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object) # printed in default formatDie Ausgabe lautet:
<class 'datetime.date'>
2022-09-19Beispiel zum Konvertieren eines Strings in ein datetime.time()-Objekt
Das folgende Beispiel konvertiert eine Zeitzeichenfolge in ein datetime.time()-Objekt und gibt den Klassentyp und den Wert des resultierenden Objekts aus:
from datetime import datetime
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)Die Ausgabe lautet:
<class 'datetime.time'>
13:55:26Konvertierung eines Strings in datetime.datetime() mit lokalem Beispiel
Das folgende Beispiel konvertiert eine deutsche Datumszeichenfolge in ein datetime.datetime()-Objekt und gibt den Klassentyp und den Wert des resultierenden Objekts aus:
from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag' # de_DE locale
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)Die Ausgabe lautet:
<class 'datetime.datetime'>
2022-12-16 00:00:00Beachten Sie, dass das resultierende Objekt den Wochentag aus der Eingabezeichenfolge nicht enthält, da das datetime.datetime()-Objekt den Wochentag nur als Dezimalzahl enthält.
Konvertiere einen String mithilfe von time.strptime() in ein struct_time()-Objekt.
Die Syntax der Methode time.strptime() lautet wie folgt:
time.strptime(time_string[, format])
Die Methode `time.strptime()` gibt ein `time.struct_time()`-Objekt zurück, das dem vom Format geparsten `time_string` entspricht. `time_string` ist erforderlich, und beide Argumente müssen Zeichenketten sein. Wird kein Format angegeben, wird der Standardwert verwendet.
'%a %b %d %H:%M:%S %Y'
Dies entspricht dem Format, das von der Funktion ctime() zurückgegeben wird.
Die Formatierungsbefehle für time.strptime() und time.strftime() sind identisch.
Konvertiere einen String in ein struct_time()-Objekt anhand des bereitgestellten Beispielformats.
Das folgende Beispiel wandelt eine Zeitzeichenkette in ein time.struct_time()-Objekt um, indem es das Formatargument angibt, und gibt den Wert des resultierenden Objekts aus:
import time
time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)Die Ausgabe lautet:
A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)Wie aus der Ausgabe hervorgeht, verwendet die Methode strptime() beim Konvertieren einer Zeichenkette in ein time.struct_time()-Objekt Platzhalterwerte für alle Formatierungsanweisungen, die nicht im Formatargument definiert sind.
Konvertiere einen String in ein struct_time()-Objekt unter Verwendung des Standardformats
Wird beim Konvertieren einer Zeitzeichenfolge in ein time.struct_time()-Objekt kein Formatargument angegeben, wird das Standardformat verwendet, und es tritt ein Fehler auf, wenn die Eingabezeichenfolge nicht exakt dem Standardformat entspricht:
'%a %b %d %H:%M:%S %Y'
Das folgende Beispiel konvertiert eine Zeitzeichenkette in ein time.struct_time()-Objekt ohne Formatargumente und gibt den Wert des resultierenden Objekts aus:
import time
# default format - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)Die Ausgabe lautet:
A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)Wie aus der Ausgabe hervorgeht, verwendet die Methode strptime() beim Konvertieren einer Zeichenkette in ein time.struct_time()-Objekt Platzhalterwerte für alle Formatierungsanweisungen, die nicht im Formatargument definiert sind, oder standardmäßig, wenn kein Format angegeben wird.
Fehlerbehebung bei strptime()-Fehlern.
Kann die Eingabezeichenfolge nicht im von `strptime()` bereitgestellten Format analysiert werden, wird ein `ValueError` ausgelöst. Sie können einen `try`-Block verwenden, um auf Analysefehler zu prüfen, und einen `else`-Block, um die Ergebnisse auszugeben. Die `ValueError`-Meldungen, die Sie bei Verwendung der `strptime()`-Methode erhalten, erläutern die Hauptgründe für Analysefehler. Das folgende Beispiel zeigt einige häufige Fehler, wie z. B. zusätzliche Daten und Formatkonflikte:
from datetime import datetime
import time
datetime_str = '09/19/18 13:55:26'
try:
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
print('ValueError 1:', ve1)
time_str = '99::55::26'
try:
time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
print('ValueError 2:', ve2)Die Ausgabe lautet:
ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'Ergebnis
In diesem Tutorial haben Sie Datums- und Zeitzeichenketten mithilfe von Python in Datums- und Zeitobjekte umgewandelt.









