Analysieren Sie das ISO 8601-Datum in Python
- Aufbau des ISO 8601 Datums
-
Verwenden Sie
strptime()
undstrtime()
, um das ISO 8601-Datum in Python zu parsen -
Verwenden Sie
fromisoformat()
, um das ISO 8601-Datum in Python zu parsen -
Verwenden Sie
dateutil
, um das ISO 8601-Datum in Python zu parsen
Daten sind für alle wichtig und für viele Anwendungen, die wir verwenden, von entscheidender Bedeutung. Als Entwickler kann es ein wenig verwirrend sein, mit den verschiedenen Zeitzonen oder Zeitobjekten, die existieren, und der Arbeit um sie herum zu arbeiten.
Allerdings gibt es oft Standards, die die Arbeit erleichtern, und darum geht es in diesem Artikel. Darüber hinaus besprechen wir die Struktur eines typischen ISO 8601-Datums und zeigen Ihnen, wie Sie typische DateTime-Objekte in die standardisierte DateTime parsen, die überall verwendet werden kann.
Aufbau des ISO 8601 Datums
Die ISO (International Organization for Standardization) arbeitet an der Schaffung von Standardisierung für ihre Mitgliedsländer in verschiedenen Bereichen, die häufig technische und nicht-technische Bereiche umfassen. Bereiche wie Engineering gehören zu ihren Schwerpunkten.
Zu den zahlreichen Standardisierungen gehört die ISO 8601 DateTime, dargestellt durch Monat, Tag, Stunde, Minuten, Sekunden und Millisekunden. Es wird weltweit als DateTime-Standard für alle Daten verwendet und ist zeitbasiert, was dazu beiträgt, falsche Darstellungen und Fehler zu vermeiden.
Wenn Sie eine Python-Anwendung erstellen, die weltweit verwendet wird, ist es wichtig, das ISO 8601-DateTime-Objekt zu verstehen, und es kann eine Anforderung sein.
Die ISO 8601 datetime wird mit dem Jahr links beginnend dargestellt und endet mit einem Millisekunden-Parameter und wird oft mit anderen Computerzeichen von T
bis Z
kombiniert.
2022-08-10 17:00:00.000
Das obige ISO-DateTime-Objekt repräsentiert den 11. August im Jahr 2022 um 17:00 Uhr. innerhalb der lokalen Zeitzone.
Es ist wichtig, anzugeben, dass die DateTime-Zeichenfolge ISO 8601 den Datumsabschnitt erfordert, der Zeitabschnitt jedoch optional ist. Sie sind verschiedene Varianten von ISO 8601, aber das Obige wäre die Referenz dieses Artikels.
Verwenden Sie strptime()
und strtime()
, um das ISO 8601-Datum in Python zu parsen
Python ist mit verschiedenen Modulen vorinstalliert, die für verschiedene Operationen nützlich sind, und eines dieser vorinstallierten Module ist datetime
, das bei Datums- und Zeitoperationen hilft. Mit dem datetime
-Modul können Sie datetime(year, month, day[, hour[, minute[, second[, microsecond[, microsecond[,tzinfo]]]]])
-Werte erhalten.
Die now()
-Methode hilft uns, das aktuelle Datum und die aktuelle Uhrzeit zu erhalten und zu entwickeln, und liefert das typische DateTime-Objekt, das wir manipulieren oder parsen können, um alle benötigten Informationen zu erhalten.
from datetime import datetime
todaysDate = datetime.now()
print(todaysDate)
Ausgang:
2022-09-28 06:55:56.832983
Auch die today()
-Methode kann verwendet werden, um den gleichen Wert zu erreichen. Allerdings wird die now()
-Methode der today()
-Methode vorgezogen.
AnoTodaysDate = datetime.today()
Ausgang:
2022-09-29 10:48:43.311880
Zuvor parsen wir das typische Python-DateTime-Objekt in das standardisierte ISO 6801-DateTime. Lassen Sie uns dies umkehren, indem Sie die ISO 6801-DateTime mit dem Python-DateTime-Objekt erstellen.
Um dies zu erreichen, benötigen wir die Methode strftime()
, die uns hilft, DateTime-Objekte in ihre String-Darstellung umzuwandeln – diesmal den ISO 6801 DateTime-String.
from datetime import datetime
todaysDate = datetime.now()
todaysDateInISO = todaysDate.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
print(todaysDateInISO)
Ausgang:
2022-09-29T11:08:29.413183
Die todaysDate
-Bindung enthält das Python-DateTime-Objekt für das aktuelle Datum und die aktuelle Uhrzeit, und dann übergeben wir die Bindung als Argument an die strftime()
-Methode, um das ISO 8601-DateTime-String-Äquivalent zu erstellen.
Wie konvertieren wir nun den ISO 8601-DateTime-String in ein Python-DateTime-Objekt? Wir brauchen eine Methode, die das Gegenteil der strftime()
-Methode macht, die strptime()
.
Diese Methode erstellt ein DateTime-Objekt aus einer DateTime-Zeichenfolge.
Daher übergeben wir einen ISO 6801 DateTime-String als erstes Argument von strptime()
und ein weiteres Argument, das das gewünschte Datumsformat definiert – das Python-DateTime-Objekt %Y-%m-%dT%H:%M:%SZ
.
parsedDate = datetime.strptime("2022-03-04T21:08:12Z", "%Y-%m-%dT%H:%M:%SZ")
print(parsedDate)
Ausgang:
2022-03-04 21:08:12
Das Datumsformat Y-%m-%dT%H:%M:%SZ
verarbeitet Jahr, Monat, Tag, Stunde, Minute und Sekunde unter Verwendung der Formatcodes, die im Python-DateTime-Objekt angegeben sind.
Verwenden Sie fromisoformat()
, um das ISO 8601-Datum in Python zu parsen
Ähnlich wie bei den Methoden strftime()
und strptime()
gibt es spezielle Methoden, die ISO-6801-DateTime-Strings erstellen oder in Python-DateTime-Objekte konvertieren können. Die Methode isoformat()
hilft dabei, die nach ISO formatierte Uhrzeit zurückzugeben, die im Format YYYY-MM-DD HH:MM:SS.mmmmmm
verarbeitet wird.
Und was noch wichtiger ist, die Methode fromisoformat()
nimmt den ISO 8601-DateTime-String und gibt das Python-DateTime-Objektäquivalent zurück.
Um ein ISO 8601 aus einem Python-DateTime-Objekt zu erstellen, können Sie zuerst das DateTime-Objekt mit der Methode now()
erstellen und die ISO 8601-Eigenschaft (Format) des Ergebnisses mit isoformat()
abrufen.
from datetime import datetime
todaysDate = datetime.now()
todaysDateInISO = todaysDate.isoformat()
print(todaysDateInISO)
Ausgang:
2022-09-28T07:46:13.350585
Das Ergebnis enthält oft ein Trennzeichen zwischen Datum und Uhrzeit. Hier ist es T
und kann geändert werden. Sie können das Trennzeichen ändern, indem Sie ein Argument übergeben.
todaysDateInISO = todaysDate.isoformat("$")
print(todaysDateInISO)
Ausgang:
2022-09-28$07:48:11.060212
Nun zum Kern der Sache: Wir können den ISO 8601-DateTime-String in ein typisches Python-DateTime-Objekt parsen.
parsedDate = datetime.fromisoformat(todaysDateInISO)
print(parsedDate)
Ausgang:
2022-09-29 14:38:17.928655
Verwenden Sie dateutil
, um das ISO 8601-Datum in Python zu parsen
Das dateutil
-Python-Modul ist ein Drittanbietermodul, mit dem Sie die Funktionalitäten erweitern können, auf die über das integrierte datetime
-Modul zugegriffen werden kann.
Um es zu installieren, können Sie den Befehl pip
verwenden:
pip install python-dateutil
Ausgang:
Collecting python-dateutil
Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 506.3 kB/s eta 0:00:00
Collecting six>=1.5
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, python-dateutil
Successfully installed python-dateutil-2.8.2 six-1.16.0
Darüber hinaus können Sie auch Zeitzonenfunktionen mit einem anderen Drittanbietermodul namens pytz
einführen, das mit dem Befehl pip
installiert werden kann.
pip install pytz
Diese Bibliotheken können problemlos ein ISO 8601-Datumsformat basierend auf einer Zeitzone erstellen und die ISO 8601-DateTime-Zeichenfolge in das typische Python-DateTime-Objekt parsen.
Für das Beispiel verwenden wir die Zeitzone US/Eastern
und erstellen einen ISO 8601 DateTime-String mit der timezone()
-Methode, der now()
-Methode und der isoformat()
-Methode.
from datetime import datetime
import pytz
usEasternDate = datetime.now(pytz.timezone("US/Eastern"))
print(usEasternDate)
usEasternDateISO = usEasternDate.isoformat()
print(usEasternDateISO)
Ausgang:
2022-09-29 10:01:17.654150-04:00
2022-09-29T10:01:17.654150-04:00
Um dann den ISO 8601-DateTime-String in das Python-DateTime-Objekt zu parsen, können wir die parse()
-Methode mit dem als Argument übergebenen ISO-Datum verwenden.
parsedDate = parser.parse(usEasternDateISO)
print(parsedDate)
Ausgang:
2022-09-29 10:01:17.654150-04:00
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn