PEP 321 – Parsen und Formatieren von Datum/Uhrzeit
- Autor:
- A.M. Kuchling <amk at amk.ca>
- Status:
- Zurückgezogen
- Typ:
- Standards Track
- Erstellt:
- 16-Sep-2003
- Python-Version:
- 2.4
- Post-History:
Inhaltsverzeichnis
Zusammenfassung
Python 2.3 fügte dem datetime Modul eine Reihe einfacher Datum- und Uhrzeit-Typen hinzu. Es gibt keine Unterstützung für das Parsen von Strings in verschiedenen Formaten und die Rückgabe einer entsprechenden Instanz eines der Typen. Dieses PEP schlägt die Hinzufügung einer Familie vordefinierter Parsing-Funktionen für mehrere häufig verwendete Datums- und Uhrzeitformate sowie eine Einrichtung für generelles Parsen vor.
Die vom datetime Modul bereitgestellten Typen haben alle .isoformat() und .ctime() Methoden, die String-Darstellungen einer Zeit zurückgeben, und die .strftime() Methode kann verwendet werden, um neue Formate zu erstellen. Es gibt eine Reihe zusätzlicher, häufig verwendeter Formate, die nützlich wären, wenn sie Teil der Standardbibliothek wären; dieses PEP schlägt auch vor, wie diese hinzugefügt werden können.
Eingabeformate
Nützliche zu unterstützende Formate umfassen
- ISO8601
- ARPA/RFC 2822
- ctime
- Von Menschen üblicherweise geschriebene Formate wie das amerikanische "MM/DD/YYYY", das europäische "YYYY/MM/DD" und Varianten wie "DD-Month-YYYY".
- CVS-Stil oder Tar-Stil-Daten ("morgen", "vor 12 Stunden" usw.)
XXX Das Perl-Modul ParseDate.pm unterstützt viele verschiedene Eingabeformate, sowohl absolute als auch relative. Sollen wir versuchen, alle zu unterstützen?
Optionen
- Funktionen zum
datetimeModul hinzufügenimport datetime d = datetime.parse_iso8601("2003-09-15T10:34:54")
- Klassenmethoden zu den verschiedenen Typen hinzufügen. Es gibt bereits verschiedene Klassenmethoden wie
.now(), daher wäre dies ziemlich natürlich.import datetime d = datetime.date.parse_iso8601("2003-09-15T10:34:54")
- Ein separates Modul (mögliche Namen: date, date_parse, parse_date) oder Unterpaket (mögliche Namen: datetime.parser) mit Parsing-Funktionen hinzufügen
import datetime d = datetime.parser.parse_iso8601("2003-09-15T10:34:54")
Ungeklärte Fragen
- Namenskonvention zu verwenden.
- Welche Ausnahme bei Fehlern auslösen? ValueError oder eine spezialisierte Ausnahme?
- Soll man wissen, welchen Typ man erwartet, oder soll das Parsen das herausfinden? (z.B. gibt
parse_iso8601("yyyy-mm-dd")einedate-Instanz zurück, aber das Parsen von "yyyy-mm-ddThh:mm:ss" gibt eindatetimezurück.) Soll es eine Option geben, einen Fehler zu signalisieren, wenn eine Zeit angegeben wird, wo keine erwartet wird, oder wenn keine Zeit angegeben wird? - Gibt es etwas Spezielles für I18N? Für Zeitzonen?
Generelles Parsen der Eingabe
Ist eine strptime()-Implementierung, die datetime-Typen zurückgibt, ausreichend?
XXX wenn ja, beschreiben Sie hier strptime. Kann die bestehende reine Python-Implementierung leicht umgerüstet werden?
Ausgabeformate
Nicht alle Eingabeformate müssen als Ausgabeformate unterstützt werden, da es ziemlich trivial ist, das strftime()-Argument für einfache Dinge wie YYYY/MM/DD richtig zu machen. Nur komplizierte Formate müssen unterstützt werden; RFC 2822 ist derzeit das einzige, das mir einfällt.
Optionen
- Vordefinierte Format-Strings bereitstellen, so dass man dies schreiben könnte
import datetime d = datetime.datetime(...) print d.strftime(d.RFC2822_FORMAT) # or datetime.RFC2822_FORMAT?
- Neue Methoden für alle Objekte bereitstellen
d = datetime.datetime(...) print d.rfc822_time()
Relevante Funktionalität in anderen Sprachen umfasst die PHP date Funktion (Python-Implementierung von Simon Willison unter http://simon.incutio.com/archive/2003/10/07/dateInPython)
Referenzen
Weitere nützliche Links
http://www.egenix.com/files/python/mxDateTime.html http://ringmaster.arc.nasa.gov/tools/time_formats.html http://www.thinkage.ca/english/gcos/expl/b/lib/0tosec.html https://moin.conectiva.com.br/DateUtil
Urheberrecht
Dieses Dokument wurde gemeinfrei erklärt.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0321.rst
Zuletzt geändert: 2025-02-01 08:59:27 GMT