Lektionen des Moduls (2/4)
datetime: Datum und Uhrzeit
Das Modul datetime stellt die Klassen zur Darstellung von Daten und Uhrzeiten bereit.
Die drei Hauptklassen
date– nur Datum (Jahr, Monat, Tag)time– nur Uhrzeit (Stunde, Minute, Sekunde, Mikrosekunde)datetime– Datum + Uhrzeit zusammentimedelta– eine Dauer (Differenz zwischen zwei Zeitpunkten)
from datetime import date, time, datetime, timedelta
date(2025, 1, 1) # datetime.date(2025, 1, 1)
time(14, 30, 0) # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0) # datetime.datetime(2025, 1, 1, 14, 30)"Jetzt": now und today
datetime.now() # current date + time
date.today() # current date onlyArithmetik mit timedelta
from datetime import datetime, timedelta
ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)
# difference between two datetimes -> timedelta
delta = domani - ora
delta.days # 1
delta.total_seconds() # 86400.0```timedeltaakzeptiertdays, seconds, microseconds, milliseconds, minutes, hours, weeks(NICHTmonthsoderyears`, da diese mehrdeutig sind).
Formatierung: strftime
Wandelt datetime -> String gemäß einem Muster um.
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d") # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M") # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y") # 'Wednesday 01 January 2025' (locale-dependent)Häufigste Anweisungen: %Y 4-stelliges Jahr, %m 2-stelliger Monat, %d 2-stelliger Tag, %H 24-Stunden-Format, %M Minuten, %S Sekunden.
Parsing: strptime
Das Gegenteil: String -> Datetime bei gegebenem erwartetem Muster.
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ISO 8601
Für den Datenaustausch wird das ISO-8601-Format (YYYY-MM-DDTHH:MM:SS) bevorzugt:
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")Zeitzonen und aware Datetimes
Standardmäßig sind datetime-Objekte in Python naive (sie enthalten keine Zeitzoneninformationen). Für reale Anwendungen empfiehlt es sich, sie aware zu machen, indem Zeitzoneninformationen über datetime.timezone.utc festgelegt oder das Modul zoneinfo verwendet wird.
Probiere es aus
Berechne das Datum 30 Tage nach dem 1. Januar 2025 und formatiere es als 'YYYY-MM-DD' in der Variablen `date_str`. Evaluiere `date_str`.
Hinweis anzeigen
base + timedelta(days=30), dann .strftime
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Analysiere den String `s = '15/03/2025'` mit strptime in die Variable `d` (datetime-Objekt). Evaluiere den ganzzahligen Wochentag `d.weekday()` (0=Mo, 6=So).
Hinweis anzeigen
strptime mit dem italienischen Formatmuster.
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Importiere `date` aus dem Modul `datetime`. Berechne die Differenz in Tagen zwischen dem 25. Dezember 2026 (`date(2026, 12, 25)`) und dem 20. Dezember 2026 (`date(2026, 12, 20)`). Speichere die ganzzahlige Anzahl der Tage (unter Verwendung des Attributs `.days` des Deltas) in `days_diff`. Evaluiere schließlich die Variable.
Hinweis anzeigen
Die Differenz zwischen zwei Daten gibt ein timedelta zurück. Greife mit delta.days auf die ganzzahligen Tage zu.
Lösung nach 3 Versuchen verfügbar