Veraltet
Aufgabe
So sind die Datumsformate aufgebaut
| Beispiel | Aufbau | |
|---|---|---|
| Eingabe | 10/1/2001 | Monat/Tag/Jahr |
| oder | October 1, 2001 | englischer Monatsname, Tag, Komma, Jahr |
| Ausgabe | 2001-10-01 | Jahr-Monat-Tag (ISO 8601); Monat und Tag zweistellig, bei Bedarf mit führender Null |
Gültig ist ein Datum, wenn der Monat zwischen 1 und 12 liegt bzw. einer dieser Monatsnamen ist und der Tag zwischen 1 und 31. Ob ein Monat 28, 29, 30 oder 31 Tage hat, müssen Sie nicht prüfen.
[
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
]Warum das US-Format unpraktisch ist, steht am Ende der Seite unter „Zum Weiterlesen“.
Demo
Bevor Sie beginnen
Öffnen Sie VS Code entsprechend Ihrem Setup und führen Sie im Terminalfenster cd aus. Die Eingabeaufforderung Ihres Terminalfensters sollte ungefähr wie folgt aussehen:
$Führen Sie als nächstes folgenden Befehl aus
mkdir outdatedum in Ihrem Codespace einen Ordner mit dem Namen outdated zu erstellen.
Führen Sie anschließend folgenden Befehl aus:
cd outdatedNun können Sie
code outdated.pyausführen, um eine Datei namens outdated.py zu erstellen. In diese Datei schreiben Sie nun Ihren Python Code.
Hilfestellung
Tipps
- Ein
str(String) in Python hat viele eingebaute Methoden, zum Beispielsplit. Mehr dazu finden Sie in der zugehörigen Dokumentation. - Eine
list(Liste) in Python besitzt ebenfalls verschiedene Methoden, wie etwaindex. Details dazu stehen in der zugehörigen Dokumentation. - Wenn Sie eine Ganzzahl (
int) mit führenden Nullen formatieren möchten, können Sie diesen Code verwenden:Fallsprint(f"{n:02}")nnur eine Ziffer ist, wird automatisch eine führende Null hinzugefügt. Weitere Informationen zur Formatierung gibt es in der zugehörigen Dokumentation.
Testen
Führen Sie zum testen Ihres Programms python outdated.py aus. Geben Sie nun die folgenden Eingaben ein und prüfen Sie, wie sich Ihr Programm verhält:
- Test 1
- Eingabe:
9/8/1636 - Erwartetes Verhalten:
1636-09-08
- Eingabe:
- Test 2
- Eingabe:
September 8, 1636 - Erwartetes Verhalten:
1636-09-08
- Eingabe:
- Test 3
- Eingabe:
23/6/1912 - Erwartetes Verhalten: Ihr Programm sollte den Benutzer erneut zur Eingabe auffordern, da es sich bei der Eingabe um ein falsch formatiertes Datum handelt.
- Eingabe:
- Test 4
- Eingabe:
Dezember 81, 1990 - Erwartetes Verhalten: Ihr Programm sollte den Benutzer erneut zur Eingabe auffordern, da es sich bei der Eingabe um ein falsch formatiertes Datum handelt.
- Eingabe:
Korrektheit
Führen Sie in Ihrem Terminal den folgenden Befehl aus, um die Korrektheit Ihres Programms zu überprüfen. Testen Sie Ihr Programm aber zuerst manuell.
check50 -l cs50/problems/2022/python/outdatedStyle
Führen Sie den folgenden Befehl aus, um den Stil Ihres Codes mit style50 zu analysieren:
style50 outdated.pyZum Weiterlesen: Warum JJJJ-MM-TT?
Für die Lösung der Aufgabe nicht nötig.
In den USA werden Daten normalerweise in der Reihenfolge Monat-Tag-Jahr (MM/TT/JJJJ) formatiert, auch bekannt als Middle-Endian-Reihenfolge, was ein ungünstiges Design ist. Dieses Format ist problematisch, da das Jahr am Ende steht, wodurch die Daten nicht einfach chronologisch sortiert werden können. Zum Beispiel lassen sich die Daten 2/2/1800, 3/3/1900 und 1/1/2000 in einem beliebigen Programm (z. B. einer Tabellenkalkulation) nur sehr schwer richtig ordnen. Zudem kann das Format auch missverstanden werden: Die Fakultät WIAI der Universität Bamberg wurde am October 1, 2001 gegründet. Der 10/1/2001 könnte aber auch als January 10, 2001 interpretiert werden.
Glücklicherweise verwenden Computer in der Regel ISO 8601, einen internationalen Standard, der vorschreibt, dass Datumsangaben unabhängig vom Land in der Reihenfolge Jahr-Monat-Tag (JJJJ-MM-TT) zu formatieren sind. Dabei werden Jahre mit vier Ziffern, Monate mit zwei Ziffern und Tage mit zwei Ziffern formatiert. Jede Ziffer wird nach Bedarf mit führenden Nullen “aufgefüllt”.