Python-datetime-Modul

PythonsdatetimeDas Modul ist das Standardbibliotheksmodul für die Verarbeitung von Datums- und Zeitangaben. Es bietet mehrere Klassen und Funktionen, die uns dabei helfen, Operationen wie Datums-, Zeit- und Zeitdifferenzberechnungen einfach durchzuführen. Ob es um das Abrufen der aktuellen Zeit, das Formatieren von Datumsangaben oder die Berechnung von Zeitdifferenzen geht,datetimeDas Modul kann all dies übernehmen.

Kernklassen des datetime-Moduls

datetimeDas Modul enthält die folgenden Kernklassen:

  • dateKlasse -dateDie Klasse wird verwendet, um ein Datum darzustellen, und enthält drei Attribute: Jahr, Monat und Tag.

  • timeKlasse -timeDie Klasse wird verwendet, um eine Uhrzeit darzustellen, und enthält Attribute wie Stunde, Minute, Sekunde und Mikrosekunde.

  • datetimeKlasse -datetimeDie Klasse ist einedateundtimeKombination aus beiden und kann das Datum und die Uhrzeit gleichzeitig darstellen.

  • timedeltaKlasse -timedeltaDie Klasse wird verwendet, um eine Zeitdifferenz darzustellen, und kann für Additions- und Subtraktionsoperationen mit Datums- und Zeitangaben verwendet werden.


Verwendung des datetime-Moduls

Aktuelles Datum und aktuelle Uhrzeit abrufen

Die Klassen-datetimemethodnow()Methode zum Abrufen des aktuellen Datums und der aktuellen Uhrzeit.

Beispiel

from datetime import datetime

# Aktuelles Datum und aktuelle Uhrzeit abrufen
now = datetime.now()
print("Aktuelle Zeit:", now)

Beispielausgabe:

当前时间: 2025-04-22 14:30:45.123456

Erstellen eines bestimmten Datums und einer bestimmten Uhrzeit

Die Klassen-datetimeKonstruktor zum Erstellen eines bestimmten Datums und einer bestimmten Uhrzeit.

Beispiel

from datetime import datetime

# Ein bestimmtes Datum und eine bestimmte Uhrzeit erstellen
specific_time = datetime(2025, 4, 22, 15, 30, 0)
print("Bestimmte Zeit:", specific_time)

Beispielausgabe:

特定时间: 2025-04-22 15:30:00

Formatieren von Datum und Uhrzeit

datetimeObjekte könnenstrftime()durch die Methode in einen String formatiert werden.

Beispiel

from datetime import datetime

# Aktuelle Zeit abrufen
now = datetime.now()

# Die Ausgabe formatieren
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("Formatierte Zeit:", formatted_time)

Beispielausgabe:

格式化时间: 2025-04-22 14:30:45

Zeitdifferenzen berechnen

timedeltaDie Klasse kann verwendet werden, um die Differenz zwischen zwei Daten oder Zeiten zu berechnen.

Beispiel

from datetime import datetime, timedelta

# Aktuelle Zeit abrufen
now = datetime.now()

# Berechne die Zeit 10 Tage später
future_time = now + timedelta(days=10)
print("Zeit nach 10 Tagen:", future_time)

Beispielausgabe:

10 天后的时间: 2025-05-02 14:30:45.123456

Häufige Anwendungsfälle

Berechnung der Anzahl der Tage zwischen zwei Daten

Beispiel

from datetime import date

# Erstelle zwei Daten
date1 = date(2025, 4, 22)
date2 = date(2025, 5, 1)

# Berechne die Tagesdifferenz
delta = date2 - date1
print("Tagesdifferenz zwischen den beiden Daten:", delta.days)

Beispielausgabe:

两个日期之间的天数差: 9

Umgang mit Zeitzonen

datetimeDas Modul selbst unterstützt Zeitzonenoperationen nicht direkt, aber sie lassen sich über diepytzBibliothek zur Handhabung von Zeitzonen.

Beispiel

from datetime import datetime
import pytz

# Aktuelle Zeit abrufen und die Zeitzone festlegen
now = datetime.now(pytz.timezone('Asia/Shanghai'))
print("Aktuelle Zeit in Shanghai:", now)

Beispielausgabe:

上海当前时间: 2025-04-22 14:30:45.123456+08:00

Gängige Klassen, Methoden und Attribute

1. Kernklassen

Klasse Beschreibung Beispiel
datetime.date Date-Klasse (Jahr, Monat, Tag) date(2023, 5, 15)
datetime.time Time-Klasse (Stunde, Minute, Sekunde, Mikrosekunde) time(14, 30, 0)
datetime.datetime Datetime-Klasse (enthält Datum und Uhrzeit) datetime(2023, 5, 15, 14, 30)
datetime.timedelta Time-Intervall-Klasse (für Datums-/Zeitberechnungen) timedelta(days=5)
datetime.tzinfo Basisklasse für Zeitzoneninformationen (erfordert Unterklassenbildung zur Implementierung) Benutzerdefinierte Zeitzonenklasse

2. dateAllgemeine Methoden/Attribute des Objekts

Methode/Attribut Beschreibung Beispiel
date.today() Gibt das aktuelle lokale Datum zurück date.today() → date(2023, 5, 15)
date.fromisoformat(str) fromYYYY-MM-DDParst ein Datum aus einer Zeichenkette date.fromisoformat("2023-05-15")
date.year Jahr (schreibgeschützt) d.year → 2023
date.month Monat (1-12, schreibgeschützt) d.month → 5
date.day Tag (1-31, schreibgeschützt) d.day → 15
date.weekday() Gibt den Wochentag zurück (0=Montag, 6=Sonntag) d.weekday() → 0
date.isoformat() Gibt zurückYYYY-MM-DDFormatzeichenfolge d.isoformat() → "2023-05-15"
date.strftime(format) Benutzerdefinierte formatierte Ausgabe d.strftime("%Y/%m/%d") → "2023/05/15"

3. timeAllgemeine Methoden/Attribute des Objekts

Methode/Attribut Beschreibung Beispiel
time.hour Stunde (0-23, schreibgeschützt) t.hour → 14
time.minute Minute (0-59, schreibgeschützt) t.minute → 30
time.second Sekunde (0-59, schreibgeschützt) t.second → 0
time.microsecond Mikrosekunde (0-999999, schreibgeschützt) t.microsecond → 0
time.isoformat() Gibt zurückHH:MM:SS.mmmmmmFormatzeichenfolge t.isoformat() → "14:30:00"
time.strftime(format) Benutzerdefinierte formatierte Ausgabe t.strftime("%H:%M") → "14:30"

4. datetimeAllgemeine Methoden/Attribute des Objekts

Methode/Attribut Beschreibung Beispiel
datetime.now() Gibt das aktuelle lokale Datum und die aktuelle Uhrzeit zurück datetime.now() → datetime(2023, 5, 15, 14, 30, 0)
datetime.utcnow() Gibt das aktuelle UTC-Datum und die aktuelle UTC-Uhrzeit zurück datetime.utcnow()
datetime.fromtimestamp(ts) Erstellt aus einem ZeitstempeldatetimeObjekt datetime.fromtimestamp(1684146600)
datetime.timestamp() Gibt den Zeitstempel zurück (Sekunden als Gleitkommazahl) dt.timestamp() → 1684146600.0
datetime.date() Extrahiert den Datumsteil dt.date() → date(2023, 5, 15)
datetime.time() Extrahiert den Zeitanteil dt.time() → time(14, 30)
datetime.year Jahr (entsprichtdate) dt.year → 2023
datetime.strftime(format) Benutzerdefinierte formatierte Ausgabe dt.strftime("%Y-%m-%d %H:%M") → "2023-05-15 14:30"

5. timedeltaGemeinsame Attribute des Objekts

Attribute Beschreibung Beispiel
days Tage (können positiv oder negativ sein) delta.days → 5
seconds Sekunden (0-86399) delta.seconds → 3600(1 Stunde)
microseconds Mikrosekunden (0-999999) delta.microseconds → 0

6. Häufige Formatierungssymbole (strftime)

Symbol Beschreibung Beispielausgabe
%Y Vierstelliges Jahr 2023
%m Zweistelliger Monat (01-12) 05
%d Zweistelliger Tag (01-31) 15
%H Stunde im 24-Stunden-Format (00-23) 14
%M Minute (00-59) 30
%S Sekunde (00-59) 00
%A Vollständiger Wochentagsname Monday
%a Abgekürzter Wochentagsname Mon
%B Vollständiger Monatsname May
%b Abgekürzter Monatsname May

Beispiel

1. Datumsdifferenz berechnen

Beispiel

from datetime import date, timedelta

d1 = date(2023, 5, 15)
d2 = date(2023, 6, 1)
delta = d2 - d1  # Gibt ein timedelta-Objekt zurück
print(delta.days)  # Ausgabe: 17

2. Zeitaddition und -subtraktion

Beispiel

from datetime import datetime, timedelta

now = datetime.now()
future = now + timedelta(days=3, hours=2)
print(future.strftime("%Y-%m-%d %H:%M"))

3. Zeitzonenumrechnung (erfordert, dass pytz installiert ist)

Beispiel

from datetime import datetime
import pytz

utc_time = datetime.utcnow().replace(tzinfo=pytz.utc)
beijing_time = utc_time.astimezone(pytz.timezone("Asia/Shanghai"))
print(beijing_time)

4. Strings parsen

Beispiel

from datetime import datetime

dt = datetime.strptime("2023-05-15 14:30", "%Y-%m-%d %H:%M")
print(dt.year)  # Ausgabe: 2023

Hinweise

  1. Unveränderlichkeit: AlledatetimeObjekte sind unveränderlich; Operationen geben neue Objekte zurück.

  2. Zeitzonenbehandlung: Nativdatetimehat keine Zeitzonenunterstützung; verwenden Siepytzoder das von Python 3.9+zoneinfo。

  3. Leistung: Häufiges Erstellen von Objekten kann die Leistung beeinträchtigen; ziehen Sie Wiederverwendung oder Caching in Betracht.

  4. Grenzprüfung: Ungültige Datumsangaben (wie z. B.date(2023, 2, 30)) lösen ausValueError。

Andere Erweiterungen