Die Umwandlung von einem Datentyp in einen anderen ist eine grundlegende Operation in der Programmierung. Nahezu jede Programmiersprache unterstützt Typkonvertierungen für ihre vordefinierten Datentypen.
Für benutzerdefinierte Datentypen wie Datums- und Zeitangaben sind jedoch oft zusätzliche Module erforderlich, insbesondere weil die Handhabung dieser Datentypen nicht immer unkompliziert ist. Glücklicherweise bietet Python eingebaute Module zur Bearbeitung von Datums- und Zeitinformationen.
In diesem Artikel werden wir uns ansehen, wie man eine Datums- und Zeitzeichenkette mit verschiedenen Modulen in ein Datums- und Zeitobjekt umwandelt. Zunächst wollen wir jedoch verstehen, warum diese Konvertierung überhaupt notwendig ist.
Warum müssen wir eine Datums- und Zeitzeichenkette in ein Datums- und Zeitobjekt umwandeln?
Die Arbeit mit Datums- und Zeitdaten im Textformat kann umständlich sein. Durch die Umwandlung in ein Datums- und Zeitformat wird die Bearbeitung wesentlich einfacher. Daten in Textform werden wie normale Textketten behandelt, ohne spezifische Methoden zur Datumsverarbeitung. Stattdessen stehen nur allgemeine Textmethoden zur Verfügung, die bei Datumsangaben nicht immer hilfreich sind.
Stellen Sie sich vor, wir müssten zwei Datumsangaben vergleichen. Im Textformat wäre dies nicht ideal. Als Datums- und Zeitobjekte können wir Vergleichsoperatoren wie bei Zahlen verwenden.
Dies ist nur ein Anwendungsfall, bei dem die Konvertierung in ein Datums- und Zeitformat die Arbeit erleichtert. Es gibt viele weitere Szenarien, wie das Addieren oder Subtrahieren von Datumsangaben, die Handhabung von Zeitzonen usw., bei denen die Konvertierung von Datums- und Zeitzeichenketten in Datums- und Zeitobjekte die Arbeit erheblich vereinfacht.
Lassen Sie uns nun verschiedene Methoden zur Konvertierung einer Datums- und Zeitzeichenkette in ein Datums- und Zeitobjekt betrachten. Wir werden sowohl das integrierte Modul „datetime“ als auch das Drittanbietermodul „dateutil“ verwenden. Beginnen wir mit dem Modul „datetime“.
Verwendung von „datetime“
„datetime“ ist ein integriertes Modul in Python zur Verarbeitung von Datums- und Zeitangaben. Es enthält verschiedene Klassen, die uns bei der Arbeit mit diesen Daten helfen. Für unsere Konvertierung verwenden wir die Klasse „datetime.datetime“.
Die Klasse „datetime.datetime“ besitzt viele Methoden. Wir werden uns auf die Methode „strptime“ konzentrieren, die uns bei der Konvertierung helfen wird.
datetime.strptime
Die Methode „datetime.strptime“ wandelt eine Datums- und Zeitzeichenkette in ein Datums- und Zeitobjekt um. Sie benötigt zwei Eingaben: die Datums- und Zeitzeichenkette selbst sowie das Format, in dem diese Zeichenkette vorliegt. Die Methode gibt dann das entsprechende Datums- und Zeitobjekt zurück.
Betrachten wir ein Beispiel:
from datetime import datetime
string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))
Die Ausführung des obigen Codes ergibt:
2022-12-19 21:37:56
Wir haben erfolgreich eine Datums- und Zeitzeichenkette mit der Methode „datetime.strptime“ in ein Datums- und Zeitobjekt umgewandelt. Es ist wichtig, dass das Format, das wir der Methode übergeben, exakt mit dem Format der Datums- und Zeitzeichenkette übereinstimmt, da es sonst zu Fehlern oder unerwarteten Ergebnissen kommen kann.
Wir haben Formatcodes für die Darstellung des Datums- und Zeitformats verwendet. Eine vollständige Übersicht der Formatcodes finden Sie in der offiziellen Python-Dokumentation.
Die Methode „datetime.strptime“ gibt das vollständige Datums- und Zeitobjekt zurück. Wenn Sie das Datum und die Zeit separat benötigen, können Sie die entsprechenden Methoden des Datums- und Zeitobjekts verwenden. Hier ist ein Beispiel:
from datetime import datetime
string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
## getting date separately
print("Date:", datetime.strptime(string, formatting).date())
## getting time separately
print("Time:", datetime.strptime(string, formatting).time())
Die Ausgabe des obigen Codes lautet:
Date: 2022-12-19
Time: 21:37:56
Die Methoden „date“ und „time“ geben jeweils eigene Objekte zurück, die ihrerseits weitere Methoden zur Bearbeitung von Datum und Uhrzeit bieten.
Bisher haben wir immer die korrekten Zeichenketten und Formate für die Methode „datetime.strptime“ verwendet. Wenn wir Fehler machen, wird es zu Problemen kommen. Sehen wir uns an, wie man diese Fehler behandeln kann. Führen Sie den folgenden Code aus:
from datetime import datetime
string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))
Der obige Code führt zu einem Fehler, da das Format nicht mit der Datums- und Zeitzeichenkette übereinstimmt. Um solche Fehler zu behandeln, können wir den try-except-Block von Python verwenden. Hier ist ein Beispiel:
from datetime import datetime
try:
string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))
except ValueError as error:
print(error)
Wenn wir den Code jetzt erneut ausführen, erhalten wir die Fehlermeldung, ohne dass das Programm abbricht:
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
Ebenso können wir den try-except-Block auch für die kommende Methode „parser.parse“ verwenden, um ein unbeabsichtigtes Abbrechen des Programms zu vermeiden. Dies ist nicht spezifisch für dieses Tutorial, aber es ist eine gute Praxis, dies zu beachten.
Das war’s zum Modul „datetime“. Gehen wir nun zum Modul „dateutil“ über.
Verwendung von „dateutil“
Das Modul „dateutil“ bietet Erweiterungen zum Modul „datetime“ und erleichtert die Arbeit mit Datums- und Zeitangaben durch eine Vielzahl von einfach zu verwendenden Methoden. Wir können das Modul mit dem folgenden Befehl installieren:
pip install python-dateutil
Die Methode, die uns interessiert, ist „dateutil.parser.parse“. Sehen wir uns an, wie man eine Datums- und Zeitzeichenkette mit dieser Methode in ein Datums- und Zeitobjekt umwandelt.
parser.parse
Die Methode „parser.parse“ nimmt eine Datums- und Zeitzeichenkette und wandelt sie automatisch in das entsprechende Datums- und Zeitobjektformat um. Wir müssen kein Format für diese Methode angeben, da sie die Konvertierung selbständig vornimmt. Betrachten wir ein Beispiel:
from dateutil import parser
string = "19-12-2022 09:37:56 PM"
print(parser.parse(string))
Die Ausführung des obigen Codes liefert folgende Ausgabe:
2022-12-19 21:37:56
Die Datums- und Zeitzeichenkette muss sich in einem Format befinden, das die Methode „parser.parse“ akzeptiert. Andernfalls wird ein Fehler ausgegeben. Eine vollständige Liste der unterstützten Formate finden Sie in der Dokumentation des Moduls.
Da die Methode „parser.parse“ ein Datums- und Zeitobjekt zurückgibt, können wir auch hier, wie beim Modul „datetime“, separat auf Datum und Zeit zugreifen. Hier ist ein Beispiel:
from dateutil import parser
string = "19-12-2022 09:37:56 PM"
print("Date:", parser.parse(string).date())
print("Time:", parser.parse(string).time())
Die Ausgabe dieses Codes ist:
Date: 2022-12-19
Time: 21:37:56
Wie Sie sehen, erleichtert „dateutil“ die Arbeit mit Datums- und Zeitangaben deutlich. Sie können das Modul in der Dokumentation weiter erkunden.
Fazit
Wir haben ein integriertes Modul („datetime“) und ein Drittanbietermodul („dateutil“) zur Konvertierung von Datums- und Zeitzeichenketten in Datums- und Zeitobjekte verwendet. Es gibt auch ein weiteres eingebautes Modul namens „time“, mit dem wir ähnliche Operationen durchführen können. Probieren Sie es selbst aus. Da Sie bereits ähnliche Aufgaben mit anderen Modulen durchgeführt haben, wird dies nicht schwierig sein.
Es gibt möglicherweise noch weitere Bibliotheken für diese Aufgabe. Die hier vorgestellten Module sind jedoch weit verbreitet und gelten als Standard. Sie können weitere Module recherchieren und die für Sie am besten geeignete auswählen.
Darüber hinaus können Sie untersuchen, wie man Zeitunterschiede in Python berechnet.
Viel Spaß beim Programmieren 🙂