Movatterモバイル変換


[0]ホーム

URL:


Following system colour schemeSelected dark colour schemeSelected light colour scheme

Python Enhancement Proposals

PEP 321 – Date/Time Parsing and Formatting

Author:
A.M. Kuchling <amk at amk.ca>
Status:
Withdrawn
Type:
Standards Track
Created:
16-Sep-2003
Python-Version:
2.4
Post-History:


Table of Contents

Abstract

Python 2.3 added a number of simple date and time types in thedatetime module. There’s no support for parsing strings in variousformats and returning a corresponding instance of one of the types.This PEP proposes adding a family of predefined parsing function forseveral commonly used date and time formats, and a facility for genericparsing.

The types provided by thedatetime module all have.isoformat() and.ctime() methods that return stringrepresentations of a time, and the.strftime() method can be usedto construct new formats. There are a number of additionalcommonly-used formats that would be useful to have as part of thestandard library; this PEP also suggests how to add them.

Input Formats

Useful formats to support include:

  • ISO8601
  • ARPA/RFC 2822
  • ctime
  • Formats commonly written by humans such as the American“MM/DD/YYYY”, the European “YYYY/MM/DD”, and variants such as“DD-Month-YYYY”.
  • CVS-style or tar-style dates (“tomorrow”, “12 hours ago”, etc.)

XXX The PerlParseDate.pm module supports many different input formats,both absolute and relative. Should we try to support them all?

Options:

  1. Add functions to thedatetime module:
    importdatetimed=datetime.parse_iso8601("2003-09-15T10:34:54")
  2. Add class methods to the various types. There are already variousclass methods such as.now(), so this would be pretty natural.:
    importdatetimed=datetime.date.parse_iso8601("2003-09-15T10:34:54")
  3. Add a separate module (possible names: date, date_parse, parse_date)or subpackage (possible names: datetime.parser) containing parsingfunctions:
    importdatetimed=datetime.parser.parse_iso8601("2003-09-15T10:34:54")

Unresolved questions:

  • Naming convention to use.
  • What exception to raise on errors? ValueError, or a specialized exception?
  • Should you know what type you’re expecting, or should the parsing figureit out? (e.g.parse_iso8601("yyyy-mm-dd") returns adate instance,but parsing “yyyy-mm-ddThh:mm:ss” returns adatetime.) Shouldthere be an option to signal an error if a time is provided wherenone is expected, or if no time is provided?
  • Anything special required for I18N? For time zones?

Generic Input Parsing

Is a strptime() implementation that returnsdatetime types sufficient?

XXX if yes, describe strptime here. Can the existing pure-Pythonimplementation be easily retargeted?

Output Formats

Not all input formats need to be supported as output formats, because it’spretty trivial to get thestrftime() argument right for simple thingssuch as YYYY/MM/DD. Only complicated formats need to be supported;RFC 2822is currently the only one I can think of.

Options:

  1. Provide predefined format strings, so you could write this:
    importdatetimed=datetime.datetime(...)printd.strftime(d.RFC2822_FORMAT)# or datetime.RFC2822_FORMAT?
  2. Provide new methods on all the objects:
    d=datetime.datetime(...)printd.rfc822_time()

Relevant functionality in other languages includes thePHP datefunction (Python implementation by Simon Willison athttp://simon.incutio.com/archive/2003/10/07/dateInPython)

References

Other useful links:

http://www.egenix.com/files/python/mxDateTime.htmlhttp://ringmaster.arc.nasa.gov/tools/time_formats.htmlhttp://www.thinkage.ca/english/gcos/expl/b/lib/0tosec.htmlhttps://moin.conectiva.com.br/DateUtil

Copyright

This document has been placed in the public domain.


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

Last modified:2025-02-01 08:59:27 GMT


[8]ページ先頭

©2009-2025 Movatter.jp