Voraussetzungen
Du kennst die Inhalte aus Teil 17 und arbeitest mit einem lokalen Python-3-Interpreter (ab Python 3.10), beispielsweise in Thonny.
Das lernst du in dieser Lektion
- Datetime und timedelta einsetzen.
- Datumsstrings formatieren und lesen.
- Laufzeiten mit perf_counter messen.
Zeitpunkte festhalten
Ein Protokoll braucht häufig eine Uhrzeit. Dafür verwenden wir das Modul datetime:
from datetime import datetime, timedelta
jetzt = datetime.now()
morgen = jetzt + timedelta(days=1)
print(jetzt.strftime("%d.%m.%Y %H:%M"))
print(morgen.strftime("%d.%m.%Y %H:%M"))
datetime.now() liest die lokale Systemzeit. Das Ergebnis ist hier ein Datum mit Uhrzeit ohne explizite Zeitzoneninformation. timedelta(days=1) beschreibt eine Zeitspanne von einem Tag. Für lokale Kursübungen ist das ausreichend; systemübergreifende Anwendungen müssen sich zusätzlich um Zeitzonen kümmern.
Formate lesen und schreiben
strftime() erzeugt Text aus einem Zeitwert. %d steht für Tag, %m für Monat, %Y für vierstellige Jahreszahl, %H für Stunde und %M für Minute. Groß- und Kleinschreibung sind wichtig.
from datetime import datetime
termin = datetime.strptime("21.10.2026 08:00", "%d.%m.%Y %H:%M")
print(termin.isoformat(timespec="minutes"))
strptime() liest einen Text mit bekanntem Muster ein. Ein unpassendes Format oder unmögliches Datum löst ValueError aus. isoformat() erzeugt hier 2026-10-21T08:00, ein gut austauschbares Textformat. Ein Datum muss vor dem JSON-Speichern üblicherweise in Text umgewandelt werden.
Dauer eines Vorgangs messen
Für eine verstrichene Dauer verwenden wir perf_counter() aus dem Modul time, nicht die angezeigte Kalenderuhr:
from time import perf_counter
start = perf_counter()
summe = 0
for zahl in range(100000):
summe += zahl
dauer_s = perf_counter() - start
print(f"Summe: {summe}")
print(f"Laufzeit: {dauer_s:.6f} s")
Der absolute Messwert des Zählers hat für uns keine Bedeutung. Interessant ist die Differenz zwischen Start und Ende. Die gemessene Dauer hängt von Rechner und Auslastung ab und wird nicht bei jedem Versuch identisch sein.
Minuten als Stunden und Minuten
druckzeit_min = 135
stunden = druckzeit_min // 60
minuten = druckzeit_min % 60
print(f"Druckdauer: {stunden} h {minuten} min")
Hier nutzt du bereits bekannte Operatoren für eine Zeitdarstellung. Das Ergebnis ist 2 h 15 min. Es handelt sich um eine Dauer, nicht um eine Uhrzeit des Tages.
Ein Datum und eine Dauer beantworten verschiedene Fragen: „Wann wurde gespeichert?“ und „Wie lange dauerte es?“ Nutze für jede Frage das passende Werkzeug. Für eine echte RC-Zeitmessung wären zusätzlich Sensorik, Ereignisverarbeitung und Genauigkeitsanforderungen nötig.
Mitmach-Aufgabe
Berechne für den festen Startzeitpunkt 21.10.2026, 08:00 Uhr eine voraussichtliche Fertigstellung nach 135 Minuten. Verwende timedelta.
Versuche die Aufgabe zuerst selbst. Vergleiche danach deinen Ansatz mit der Musterlösung. Andere Lösungen sind möglich, wenn sie dieselben Anforderungen erfüllen.
Musterlösung
from datetime import datetime, timedelta
start = datetime(2026, 10, 21, 8, 0)
ende = start + timedelta(minutes=135)
print(ende.strftime("Fertig am %d.%m.%Y um %H:%M Uhr"))
Ergebnis prüfen
Die Ausgabe lautet Fertig am 21.10.2026 um 10:15 Uhr.
Typische Stolperstellen
%m ist der Monat, %M die Minute. Laufzeitmessungen sind keine festen Sollwerte. Lokale Zeit ohne Zeitzoneninformation eignet sich nicht ungeprüft für internationale Datenaustausche.
Was du jetzt kannst
- Datetime und timedelta einsetzen.
- Datumsstrings formatieren und lesen.
- Laufzeiten mit perf_counter messen.
Passendes Cheatsheet
Zum Nachschlagen: Cheatsheet 15 – Datum, Uhrzeit und Zeitmessung. Dort findest du auch den vorhandenen PDF-Download.
Im nächsten Teil
In Teil 19 geht es um Klassen und Objekte verständlich erklärt. Lerne den Grundgedanken der Objektorientierung an einer Filamentrolle kennen.
