Die Standardbibliothek gibt es bereits · Übung
Zeitabstände mit datetime messen
Die erste Aufgabe der Übersicht klingt einfach: Bestimme, wie viele Tage zwischen zwei Daten liegen. Die Daten kommen als Text wie "2026-08-03" an. Diese Strings voneinander abzuziehen wäre für Python keine Kalenderberechnung.
Die Dokumentation von datetime zeigt den Weg:
date.fromisoformatakzeptiert einen ISO-Datumsstring und gibt einendate-Wert zurück;wenn du einen
date-Wert von einem anderen abziehst, erhältst du eintimedelta;ein
timedeltastellt den Abstand in ganzen Tagen über.daysbereit.
Probiere diese Vereinbarung an einem kleinen Beispiel aus:
Das Ergebnis ist 8, nicht 9: Es geht um den Abstand zwischen Daten, nicht darum, beide Endtage beim Zählen einzuschließen. Wenn du die beiden Daten vertauschst, erhältst du -8. Wir behalten dieses vorzeichenbehaftete Verhalten bei, weil es nützliche Informationen bewahrt, statt eine versehentlich umgekehrte Eingabe zu verbergen.
Den Fehlervertrag der API beibehalten
date.fromisoformat("next Tuesday") löst ValueError aus. Auf dieser Ebene ist das nützlich. days_between weiß nicht, ob eine spätere Oberfläche erneut fragen, eine Datenzeile ablehnen oder einen Fehler anzeigen soll. Den Fehler hier abzufangen würde diese Entscheidung in eine kleine Umwandlungsfunktion zwingen.
Das spätere Kapitel zur Fehlerbehandlung entscheidet, was eine Oberfläche tun sollte. Lass die beschriebene Ausnahme vorerst den Aufrufer erreichen.
Was gibt date.fromisoformat("2026-08-11") zurück?
Implementiere days_between im Arbeitsbereich. Probiere die Funktion vor dem Einreichen mit einigen eigenen Datumspaaren aus, darunter zwei gleiche Tage und ein Paar in umgekehrter Reihenfolge.
Aufgabe
Implementiere days_between(start_text, end_text) in activity_report.py.
Lies beide Argumente mit
datetime.date.fromisoformatein.Gib
(end_date - start_date).dayszurück.Behalte das vorzeichenbehaftete Ergebnis bei, wenn das Ende vor dem Anfang liegt.
Lass ungültigen ISO-Datumstext
ValueErrorauslösen.
Du darfst das Modul datetime oder daraus date importieren. Auch ein anderer Name für einen dieser Importe ist erlaubt; entscheidend sind das öffentliche Verhalten und die beschriebene API.