0%

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.fromisoformat akzeptiert einen ISO-Datumsstring und gibt einen date-Wert zurück;

  • wenn du einen date-Wert von einem anderen abziehst, erhältst du ein timedelta;

  • ein timedelta stellt den Abstand in ganzen Tagen über .days bereit.

Probiere diese Vereinbarung an einem kleinen Beispiel aus:

Try it

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.fromisoformat ein.

  • Gib (end_date - start_date).days zurück.

  • Behalte das vorzeichenbehaftete Ergebnis bei, wenn das Ende vor dem Anfang liegt.

  • Lass ungültigen ISO-Datumstext ValueError auslö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.