Einführung
Die Python-Module datetime
und time
enthalten beide eine Klasse strptime()
zur Konvertierung von Zeichenfolgen in Objekte.
In diesem Artikel verwenden Sie strptime()
, um Zeichenfolgen in datetime
– und struct_time()
-Objekte umzuwandeln.
Veröffentlichen Sie Ihre Python-Anwendungen von GitHub aus mit DigitalOcean App Platform. Lassen Sie DigitalOcean Ihre App skalieren.
Konvertieren einer Zeichenfolge in ein datetime
-Objekt mit datetime.strptime()
Die Syntax für die Methode datetime.strptime()
lautet:
datetime.strptime(date_string, format)
Die Methode datetime.strptime()
gibt ein datetime
-Objekt zurück, das der von date_string analysierten format entspricht. Beide Argumente sind erforderlich und müssen Zeichenfolgen sein.
Für Details zu den Formatanweisungen, die in datetime.strptime()
verwendet werden, siehe strftime()
und strptime()
Formatcodes in der Python-Dokumentation.
Beispiel zur Konvertierung eines Strings in ein datetime.datetime()
-Objekt
Das folgende Beispiel konvertiert einen Datum- und Zeitstring in ein datetime.datetime()
-Objekt und gibt den Klassennamen sowie 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) # im Standardformat ausgegeben
Die Ausgabe lautet:
<class 'datetime.datetime'>
2022-09-19 13:55:26
Beispiel zur Konvertierung eines Strings in ein datetime.date()
-Objekt
Das folgende Beispiel konvertiert einen Datumsstring in ein datetime.date()
-Objekt und gibt den Klassentyp sowie 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) # im Standardformat ausgegeben
Die Ausgabe lautet:
<class 'datetime.date'>
2022-09-19
Beispiel zur Konvertierung eines Strings in ein datetime.time()
-Objekt
Die folgende Beispiel konvertiert einen Zeit-String in ein datetime.time()
-Objekt und gibt den Klassentyp sowie 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 ist:
<class 'datetime.time'>
13:55:26
String in datetime.datetime()
-Objekt mit Lokalisierungsbeispiel konvertieren
Das folgende Beispiel konvertiert einen deutschen Datums-String in ein datetime.datetime()
-Objekt und gibt den Klassentyp sowie 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 Lokalisierung
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)
Die Ausgabe ist:
<class 'datetime.datetime'>
2022-12-16 00:00:00
Beachten Sie, dass das resultierende Objekt den Wochentag aus dem Eingangsstring nicht enthält, da ein datetime.datetime()
-Objekt den Wochentag nur als Dezimalzahl enthält.
String in ein struct_time()
-Objekt mit time.strptime()
konvertieren
Die Syntax für die time.strptime()
-Methode lautet:
time.strptime(time_string[, format])
Die Methode time.strptime()
gibt ein time.struct_time()
-Objekt zurück, das dem von time_string analysierten Format entspricht. Der time_string ist erforderlich und beide Argumente müssen Zeichenketten sein. Wenn kein Format bereitgestellt wird, ist das Standardformat:
'%a %b %d %H:%M:%S %Y'
Dies entspricht dem Format, das von der Funktion ctime()
zurückgegeben wird.
Die Formatanweisungen sind für time.strptime()
und time.strftime()
dieselben. Erfahren Sie mehr über die Formatanweisungen für das time
-Modul in der Python-Dokumentation.
Beispiel zur Umwandlung einer Zeichenkette in ein struct_time()
-Objekt mit bereitgestelltem Format
Im folgenden Beispiel wird eine Zeitzeichenkette in ein time.struct_time()
-Objekt umgewandelt, indem das Format-Argument bereitgestellt wird, und der Wert des resultierenden Objekts wird ausgegeben:
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 ist:
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 ersichtlich ist, verwendet die Methode strptime()
Platzhalterwerte für alle Formatanweisungen, die nicht im Format-Argument definiert sind, wenn Sie eine Zeichenkette in ein time.struct_time()
-Objekt umwandeln.
String in struct_time()
-Objekt mit Standardformat umwandeln Beispiel
Wenn Sie kein Format-Argument angeben, wenn Sie einen Zeitstring in ein time.struct_time()
-Objekt umwandeln, wird das Standardformat verwendet und es tritt ein Fehler auf, wenn der Eingabestring nicht genau dem Standardformat entspricht:
'%a %b %d %H:%M:%S %Y'
Im folgenden Beispiel wird ein Zeitstring ohne Format-Argument in ein time.struct_time()
-Objekt umgewandelt und der Wert des resultierenden Objekts wird ausgegeben:
import time
# Standardformat - "%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 ersichtlich ist, verwendet die strptime()
-Methode beim Umwandeln eines Strings in ein time.struct_time()
-Objekt Platzhalterwerte für alle Formatdirektiven, die nicht im Format-Argument definiert sind oder durch das Standardformat, wenn kein Format angegeben wird.
Fehlerbehebung bei strptime()
-Fehlern
Wenn der Eingabestring nicht mit dem bereitgestellten Format von `strptime()` analysiert werden kann, wird ein `ValueError` ausgelöst. Sie können den `try`-Block verwenden, um auf Analysefehler zu testen, zusammen mit dem `except`-Block, um die Ergebnisse auszugeben. Die `ValueError`-Meldungen, die Sie erhalten, wenn Sie die Methode `strptime()` verwenden, erklären deutlich die Ursachen der Analysefehler. Das folgende Beispiel demonstriert einige häufige Fehler, wie zusätzliche Daten und eine Formatinkompatibilität:
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 ist:
ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'
Schlussfolgerung
In diesem Tutorial haben Sie Datum- und Zeitstrings in `datetime`- und `time`-Objekte mit Python konvertiert. Setzen Sie Ihr Lernen mit weiteren Python-Tutorials fort.
Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime