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
# 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
# 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
# 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
# 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
# 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
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
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
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
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
dt = datetime.strptime("2023-05-15 14:30", "%Y-%m-%d %H:%M")
print(dt.year) # Ausgabe: 2023
Hinweise
Unveränderlichkeit: Alle
datetimeObjekte sind unveränderlich; Operationen geben neue Objekte zurück.Zeitzonenbehandlung: Nativ
datetimehat keine Zeitzonenunterstützung; verwenden Siepytzoder das von Python 3.9+zoneinfo。Leistung: Häufiges Erstellen von Objekten kann die Leistung beeinträchtigen; ziehen Sie Wiederverwendung oder Caching in Betracht.
Grenzprüfung: Ungültige Datumsangaben (wie z. B.
date(2023, 2, 30)) lösen ausValueError。