Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

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

  1. Funktionen zum datetime Modul hinzufügen
    import datetime
    d = datetime.parse_iso8601("2003-09-15T10:34:54")
    
  2. 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")
    
  3. 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") eine date-Instanz zurück, aber das Parsen von "yyyy-mm-ddThh:mm:ss" gibt ein datetime zurü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

  1. 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?
    
  2. 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


Quelle: https://github.com/python/peps/blob/main/peps/pep-0321.rst

Zuletzt geändert: 2025-02-01 08:59:27 GMT