1. Grundkenntnisse, die Sie vor der Handhabung von Datum und Strings in Python kennen sollten
Beim Verarbeiten von Datum und Zeit in Python ist das grundlegendste das Modul „datetime“. In diesem Artikel erklären wir detailliert, wie man Datum und Strings gegenseitig konvertiert, aber zuerst lassen Sie uns die grundlegenden Konzepte und Klassen, die Sie kennen sollten, zusammenfassen.
Was ist die Standardbibliothek datetime von Python?
In Python ist als Standardbibliothek für die Handhabung von Datum und Zeit das Modul datetime verfügbar. Es erfordert keine zusätzliche Installation und kann sofort verwendet werden. Mit diesem Modul können Sie eine Vielzahl von Operationen durchführen, wie das Abrufen der aktuellen Uhrzeit, das Addieren und Subtrahieren von Daten, Formatkonvertierungen und Vergleiche. Zuerst überprüfen wir die grundlegende Importmethode.
import datetime
Oder Sie können wie folgt nur die benötigten Klassen importieren.
from datetime import datetime, date, time, timedelta
Häufig verwendete Klassen und ihre Unterschiede
Das datetime-Modul enthält mehrere Klassen, aber diejenigen, die eng mit der Konvertierung von Datum und Strings zusammenhängen, sind hauptsächlich die folgenden drei.
datetime.date-Klasse
Diese Klasse repräsentiert Informationen zu „Jahr, Monat, Tag“. Sie enthält keine Zeitinformationen.
d = datetime.date(2025, 4, 7)
print(d) # Ausgabe: 2025-04-07
datetime.time-Klasse
Diese Klasse enthält nur Zeitinformationen wie „Stunde, Minute, Sekunde“. Sie enthält keine Datumsangaben.
t = datetime.time(14, 30, 0)
print(t) # Ausgabe: 14:30:00
datetime.datetime-Klasse
Diese Klasse ist die vielseitigste und kann sowohl Datum (Jahr, Monat, Tag) als auch Zeit (Stunde, Minute, Sekunde) handhaben.
Diese Klasse wird bei der gegenseitigen Konvertierung von Strings und Datum am häufigsten verwendet.
Aktuelles Datum und Uhrzeit mit datetime.now() abrufen
Mit der now()-Methode der datetime.datetime-Klasse können Sie die aktuelle Datum und Uhrzeit einfach abrufen.
from datetime import datetime
now = datetime.now()
print(now) # Beispiel: 2025-04-07 13:45:12.345678
Das so abgerufene datetime-Objekt kann mit strftime() oder strptime(), die später vorgestellt werden, in einen String konvertiert oder aus einem String generiert werden.
Zusammenfassung
In diesem Abschnitt haben wir einen Überblick über das datetime-Modul gegeben, das für die Handhabung von Datum und Zeit in Python am grundlegendsten ist, und die Unterschiede zwischen den repräsentativen Klassen erklärt. Im nächsten Abschnitt konzentrieren wir uns auf die „Konvertierung von String zu Datum“ und stellen die konkrete Verwendung von strptime() vor.
2. [Zeichenkette → Datum] Methode zum Erstellen eines Datumsobjekts mit strptime()
In Python verwenden Sie die Methode strptime(), um eine Zeichenkette, die ein Datum darstellt, in ein datetime-Objekt umzuwandeln. Dies ist eine Abkürzung für „string parse time“ und eine Funktion, die die Zeichenkette analysiert und als Datum interpretiert. In diesem Kapitel erklären wir schrittweise von der grundlegenden Verwendung über die Handhabung japanischer Datumsdarstellungen bis hin zu Fehlbehandlungen.
Grundlegende Verwendung von strptime() und Liste der Formatangaben
Zeichenketten mit japanischen Wochentagen können mit dem basischen strptime() nicht verarbeitet werden
Zum Beispiel führt eine Zeichenkette wie „2025-04-07 (Mo)“ zu einem Fehler mit strptime() allein, da Pythons strptime() lokalisierungsabhängig ist und japanische Wochentage standardmäßig nicht unterstützt. In diesem Fall gibt es folgende Lösungsansätze:
Entfernen Sie den unnötigen japanischen Wochentag aus der Zeichenkette und übergeben Sie sie dann an strptime()
Nutzen Sie externe Bibliotheken (z. B. kanji_to_time usw.)
Häufige Fehler und deren Behebung: ValueError
Der häufigste Fehler beim Einsatz von strptime() ist der folgende.
ValueError: time data '2025/04/07' does not match format '%Y-%m-%d'
Was ist die Ursache dieses Fehlers?
Dies tritt auf, weil das tatsächliche Format der Zeichenkette nicht mit dem angegebenen Format übereinstimmt. Zum Beispiel, um ein Datum wie '2025/04/07' zu verarbeiten, müssen Sie das Format entsprechend an die Schrägstriche anpassen.
Überprüfen Sie die Trennzeichen (-, /, Leerzeichen usw.)
Prüfen Sie, ob Nullauffüllung vorhanden ist (z. B. ’04‘ vs. ‚4‘)
Stellen Sie sicher, dass keine überflüssigen Informationen enthalten sind, die strptime() nicht verarbeiten kann, wie Wochentage
3. [Datum → String] Methode zur freien Formatkonvertierung mit strftime()
Beim Umgang mit Datumsangaben in Python gibt es sehr viele Situationen, in denen man ein datetime-Objekt in einen String in einem bestimmten Format umwandeln möchte. In solchen Fällen ist die strftime()-Methode sehr nützlich. In diesem Kapitel erklären wir die grundlegende Verwendung von strftime(), gängige Format‑Spezifizierer und die Methode, um Wochentage und Monatsnamen auf Japanisch anzuzeigen.
Falls japanische Wochentage angezeigt werden sollen
Mit strftime('%A') kann der Wochentag angezeigt werden, standardmäßig jedoch auf Englisch. Um ihn auf Japanisch anzuzeigen, muss die Locale (Spracheinstellung) geändert werden.
Beispiel mit dem locale‑Modul (für UNIX/Linux‑Umgebungen)
In diesem Kapitel haben wir die Verwendung von strftime() und praktische Beispiele zur Konvertierung eines datetime-Objekts in einen String vorgestellt. Die Möglichkeit, das Ausgabeformat frei anzupassen, ist in vielen Szenarien wie der Visualisierung von Datumdaten oder der Protokollierung sehr nützlich. Im nächsten Kapitel erklären wir die gegenseitige Konvertierung mit dem standardisierten Datumsformat „ISO 8601“.
4. Techniken zur gegenseitigen Umwandlung mit dem ISO-8601-Format
Bei der Datenverknüpfung zwischen Systemen oder API-Kommunikation ist es üblich, Datum und Uhrzeit im „ISO-8601-Format“ auszutauschen. In Python ist die Umwandlung in dieses Format eine der sehr wichtigen Operationen. In diesem Kapitel erklären wir die Methoden zur gegenseitigen Umwandlung des ISO-8601-Formats in Python sowie die Handhabung von Strings mit Zeitzoneninformationen.
Was ist das ISO-8601-Format?
Das ISO-8601-Format ist die von der Internationalen Organisation für Normung (ISO) festgelegte Regelung für die Darstellung von Datum und Uhrzeit. Es wird in einer Form wie der folgenden dargestellt:
2025-04-07T14:30:00
Zwischen Datum und Uhrzeit wird „T“ eingefügt
24-Stunden-Format
Zeitzoneninformationen (z. B. +09:00 oder Z) können angehängt sein
Dieses Format wird weit verbreitet in Datenformaten wie JSON oder XML, REST-APIs, Logdateien usw. verwendet.
isoformat() für die Konvertierung von Datum zu ISO-Format-String
Das datetime-Objekt in Python verfügt über eine bequeme Methode namens isoformat().
# Anzeige bis Millisekunden
print(dt.isoformat(timespec='milliseconds')) # 2025-04-07T14:30:00.000
# Nur Datum abrufen
print(dt.date().isoformat()) # 2025-04-07
fromisoformat() für die Konvertierung von ISO-Format zu datetime-Objekt
Umgekehrt wird zur Erstellung eines datetime-Objekts aus einem ISO-8601-Format-String fromisoformat() verwendet.
Es ist sehr intuitiv und wird seit Python 3.7 unterstützt.
Methoden zur Handhabung von ISO-Strings mit Zeitzoneninformationen
Die Standard-fromisoformat() kann Fälle mit Zeitzoneninformationen (z. B. +09:00 oder Z) nicht immer richtig verarbeiten. In solchen Fällen kann die Verwendung einer Drittanbieter-Bibliothek flexibler sein.
Auf diese Weise können ISO-Strings mit Zeitzone genau geparst werden.
Zusatz: Unterschiede zwischen UTC und Z-Notation
Z ist eine Abkürzung für „Zulu Time (UTC)“.
2025-04-07T14:30:00Z stellt die Zeit in UTC (Koordinierter Weltzeit) dar.
Da die Standard-fromisoformat() in Python die Z-Notation nicht unterstützt, wird die Verwendung von dateutil.parser empfohlen.
Zusammenfassung
Das ISO-8601-Format ist unverzichtbar für den Datenaustausch von Datum und Uhrzeit. In Python können Konvertierungen einfach mit isoformat() und fromisoformat() durchgeführt werden, aber für Strings mit Zeitzone ist die Verwendung der externen Bibliothek dateutil sehr effektiv. Im nächsten Kapitel werden anwendungsbezogene fortgeschrittene Techniken wie Berechnungen, Vergleiche und Differenzen von Daten eingeführt.
5. Nützliche Techniken zum Umgang mit Datumsangaben
Beim Umgang mit Datum und Uhrzeit werden nicht nur Formatkonvertierungen verwendet, sondern auch häufig Prozesse wie der Vergleich von Datumsangaben oder das Addieren und Subtrahieren von Datumsangaben. In diesem Kapitel erklären wir zentrale Techniken aus dem datetime-Modul, die in der Praxis nützlich sind.
timedelta zum Addieren und Subtrahieren von Datumsangaben verwenden
Um Datumsangaben wie „einen Tag später“, „eine Woche früher“ oder „30 Tage später“ zu berechnen, verwendet man die Klasse datetime.timedelta.
Auf diese Weise wird die Differenz als timedelta-Objekt erhalten, und detaillierte Werte können über Attribute wie .days oder .seconds abgerufen werden.
Methode zum Abrufen und Überprüfen eines bestimmten Wochentags
Um den Wochentag eines Datums abzurufen oder zu überprüfen, ob es sich um einen bestimmten Wochentag handelt, verwendet man .weekday() oder .isoweekday().
In diesem Kapitel haben wir Methoden zur Addition und Subtraktion von Datumsangaben, zum Vergleich, zur Berechnung von Differenzen und zur Bestimmung des Wochentags vorgestellt, die in der Praxis häufig vorkommen. Insbesondere die Verwendung von timedelta ist sehr vielseitig und sollte als grundlegende Fähigkeit im Umgang mit Datumsangaben im Gedächtnis behalten werden. Im nächsten Kapitel fassen wir häufig gestellte Fragen (FAQ) zu den bisher erläuterten Inhalten zusammen und bieten Informationen, die beim Klären von Zweifeln hilfreich sind.
6. Häufig gestellte Fragen (FAQ)
Beim Umgang mit Datum und Strings in Python, insbesondere Punkte, an denen Anfänger leicht stolpern, haben wir in Form von häufig gestellten Fragen zusammengefasst. Nutzen Sie dies zur Fehlerbehebung und zur Vertiefung des Verständnisses.
Q1. Warum tritt ein ValueError bei strptime() auf?
A. Wahrscheinlich passt das Format nicht.
Bei strptime() führt bereits eine Abweichung von einem Zeichen zwischen String und angegebenem Format zu einem Fehler. Beispiel: Falscher Fall
from datetime import datetime
date_string = '2025/04/07'
# Das Format ist „-“ und passt nicht
dt = datetime.strptime(date_string, '%Y-%m-%d')
# → ValueError tritt auf
Korrekturbeispiel:
dt = datetime.strptime(date_string, '%Y/%m/%d')
Andere mögliche Ursachen sind:
Das Vorhandensein von führenden Nullen (04 und 4 usw.)
Überflüssige Zeichen (z. B. Wochentag oder Leerzeichen)
Nicht unterstützte Formate (z. B. japanische „Vormittag/Nachmittag“)
Q2. Warum wird der japanische Wochentag nicht angezeigt, sondern Englisch?
A. strftime('%A') hängt vom Lokalisierungseinstellung (Spracheinstellung) ab.
In der Standardeinstellung von Python wird Englisch verwendet, daher werden Wochentage mit %A wie Monday abgerufen.
Lösung 1: Das locale-Modul verwenden (UNIX/Linux-Systeme)
Q4. Was ist der Unterschied zwischen datetime.now() und datetime.today()?
A. Im Wesentlichen dasselbe (datetime.datetime).
from datetime import datetime
print(datetime.now()) # Aktuelles Datum und Uhrzeit abrufen
print(datetime.today()) # Ebenso aktuelles Datum und Uhrzeit abrufen
Beide geben die aktuelle lokale Uhrzeit zurück. Es gibt strenge Unterschiede in der Python-Dokumentation, aber für übliche Anwendungen können Sie dasselbe Verhalten annehmen.
Q5. Ich kann ISO-Strings mit Zeitzone nicht konvertieren. Was tun?
A. datetime.fromisoformat() unterstützt einige Strings mit Zeitzone nicht.
Beispiel: 2025-04-07T14:30:00+09:00 usw.
Lösung: dateutil.parser.parse() verwenden
from dateutil import parser
s = '2025-04-07T14:30:00+09:00'
dt = parser.parse(s)
print(dt) # Ausgabe: 2025-04-07 14:30:00+09:00
Mit der dateutil-Bibliothek können Sie flexibel mit Strings mit Zeitzone umgehen.
Ergänzung: Was tun, wenn die japanische Lokalisierung unter Windows nicht richtig funktioniert?
Wenn locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8') nicht funktioniert, ist der Lokalisierungsname unter Windows wie Japanese_Japan.932.
Allerdings gibt es Umgebungsunterschiede, daher ist die Dictionary-Mapping-Methode sicherer.
Zusammenfassung
Im FAQ haben wir häufige Fehler und verwirrende Punkte mit konkreten Beispielen erklärt. Wenn Sie diese Zweifel klären können, sollten Sie beim Umgang mit Datum und Strings in Python erheblich selbstbewusster sein.