Direkt zum Hauptinhalt springen
eLearner.app
Modul 8 · Lektion 2 von 430/36 im Kurs~12 min
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 zusammen
  • timedelta – eine Dauer (Differenz zwischen zwei Zeitpunkten)
Python
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

Python
datetime.now()        # current date + time
date.today()          # current date only

Arithmetik mit timedelta

Python
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.

Python
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.

Python
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:

Python
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

Übung#python.m8.l2.e1
Versuche: 0Wird geladen…

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`.

Editor wird geladen…
Hinweis anzeigen

base + timedelta(days=30), dann .strftime

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#python.m8.l2.e2
Versuche: 0Wird geladen…

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).

Editor wird geladen…
Hinweis anzeigen

strptime mit dem italienischen Formatmuster.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

Übung#python.m8.l2.e3
Versuche: 0Wird geladen…

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.

Editor wird geladen…
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