EMZETT.
Login

Kurz: Mit dem Modul datetime rechnest du mit Datum und Uhrzeit: Wie viele Tage sind es bis zum Geburtstag? Welcher Wochentag ist der 24. Dezember? Wie formatiere ich ein Datum?

Teil des Kurses Python

Kapitel 34 von 44 im Kurs Python. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Mit dem Modul datetime rechnest du mit Datum und Uhrzeit: Wie viele Tage sind es bis zum Geburtstag? Welcher Wochentag ist der 24. Dezember? Wie formatiere ich ein Datum?

Die wichtigsten Klassen

KlasseInhalt
dateDatum (Jahr, Monat, Tag)
timeUhrzeit (Stunde, Minute, Sekunde)
datetimeDatum und Uhrzeit zusammen
timedeltaZeitspanne (Tage, Sekunden, …)

Datum erzeugen

from datetime import date, datetime
 
d = date(2025, 12, 24)
print(d)
print(d.year, d.month, d.day)
print(d.weekday())               # Montag = 0 ... Sonntag = 6
 
moment = datetime(2025, 3, 8, 14, 30, 15)
print(moment)
print(moment.hour, moment.minute)
print(date.today() >= date(2020, 1, 1))

Ausgabe:

2025-12-24
2025 12 24
2
2025-03-08 14:30:15
14 30
True

date.today() und datetime.now() liefern den aktuellen Zeitpunkt; die Ausgabe ändert sich natürlich jeden Tag.

Formatieren und einlesen

Mit strftime machst du aus einem Datum einen Text, mit strptime umgekehrt:

KürzelBedeutungBeispiel
%dTag08
%mMonat (Zahl)03
%YJahr (4-stellig)2025
%H %M %SStunde, Minute, Sekunde14:30:15
%AWochentag (Name)Samstag
%BMonatsnameMärz

Die Namen von Wochentagen und Monaten hängen von der Systemsprache ab.

from datetime import datetime
 
m = datetime(2025, 3, 8, 14, 30)
print(m.strftime("%d.%m.%Y"))
print(m.strftime("%H:%M Uhr"))
print(m.isoformat())
 
eingelesen = datetime.strptime("24.12.2025 18:00", "%d.%m.%Y %H:%M")
print(eingelesen.year, eingelesen.hour)
print(datetime.fromisoformat("2025-06-01T09:15:00").month)

Ausgabe:

08.03.2025
14:30 Uhr
2025-03-08T14:30:00
2025 18
6

Rechnen mit timedelta

Ein timedelta ist eine Zeitspanne. Du kannst sie addieren, subtrahieren und aus der Differenz zweier Daten gewinnen:

from datetime import date, datetime, timedelta
 
heute = date(2025, 3, 8)
print(heute + timedelta(days=30))
print(heute - timedelta(weeks=2))
 
weihnachten = date(2025, 12, 24)
rest = weihnachten - heute
print(rest.days, "Tage bis Weihnachten")
 
dauer = datetime(2025, 3, 8, 18, 0) - datetime(2025, 3, 8, 9, 30)
print(dauer, dauer.total_seconds() / 3600, "Stunden")

Ausgabe:

2025-04-07
2025-02-22
291 Tage bis Weihnachten
8:30:00 8.5 Stunden

Schaltjahre und Monatslängen

import calendar
 
print(calendar.isleap(2024), calendar.isleap(2100))
print(calendar.monthrange(2024, 2))     # (Wochentag des 1., Anzahl Tage)
print(calendar.month_name[3], calendar.day_name[0])

Ausgabe:

True False
(3, 29)
March Monday

Zeitzonen

Ein datetime ohne Zeitzone nennt man naiv. Für korrektes Arbeiten über Zeitzonen hinweg gibt es das Modul zoneinfo:

from datetime import datetime
from zoneinfo import ZoneInfo
 
utc = datetime(2025, 7, 1, 12, 0, tzinfo=ZoneInfo("UTC"))
berlin = utc.astimezone(ZoneInfo("Europe/Berlin"))
print(utc.isoformat())
print(berlin.isoformat())

Ausgabe:

2025-07-01T12:00:00+00:00
2025-07-01T14:00:00+02:00

Tipp

Speichere Zeitpunkte intern am besten in UTC und rechne sie erst zur Anzeige in die Ortszeit um.

Messen, wie lange etwas dauert

import time
 
start = time.perf_counter()
summe = sum(range(1_000_000))
dauer = time.perf_counter() - start
print(summe, dauer < 5)

Ausgabe:

499999500000 True

Merke

  • date, time, datetime und timedelta stammen aus datetime
  • strftime formatiert, strptime liest; isoformat() liefert das ISO-Format
  • Differenzen zweier Daten sind timedelta-Objekte (.days, .total_seconds())
  • calendar kennt Schaltjahre und Monatslängen
  • zoneinfo.ZoneInfo für Zeitzonen; intern UTC speichern

Übungsaufgabe

Berechne, wie viele Tage du schon lebst, und bestimme den Wochentag deines Geburtstags in diesem Jahr.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: JSON und CSV

Weiter: Reguläre Ausdrücke

Alle Kapitel: Python im Überblick