Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 321 – 日期/时间解析和格式化

作者:
A.M. Kuchling <amk at amk.ca>
状态:
已撤回
类型:
标准跟踪
创建日期:
2003年9月16日
Python 版本:
2.4
发布历史:


目录

摘要

Python 2.3 在 datetime 模块中添加了一些简单的日期和时间类型。它不支持解析各种格式的字符串并返回相应类型的实例。本 PEP 建议为几种常用日期和时间格式添加一系列预定义的解析函数,并提供通用解析功能。

datetime 模块提供的所有类型都有 .isoformat().ctime() 方法,用于返回时间的字符串表示,并且 .strftime() 方法可用于构造新格式。还有许多其他常用的格式,将它们作为标准库的一部分会很有用;本 PEP 还建议如何添加它们。

输入格式

需要支持的有用格式包括

  • ISO8601
  • ARPA/RFC 2822
  • ctime
  • 人类常用书写的格式,例如美国“MM/DD/YYYY”、欧洲“YYYY/MM/DD”以及“DD-Month-YYYY”等变体。
  • CVS 样式或 tar 样式日期(“明天”、“12 小时前”等)

XXX Perl 的 ParseDate.pm 模块支持许多不同的输入格式,包括绝对和相对格式。我们是否应该尝试支持所有这些格式?

选项

  1. datetime 模块添加函数
    import datetime
    d = datetime.parse_iso8601("2003-09-15T10:34:54")
    
  2. 向各种类型添加类方法。已经有各种类方法,例如 .now(),所以这会很自然。
    import datetime
    d = datetime.date.parse_iso8601("2003-09-15T10:34:54")
    
  3. 添加一个单独的模块(可能的名称:date, date_parse, parse_date)或子包(可能的名称:datetime.parser)来包含解析函数
    import datetime
    d = datetime.parser.parse_iso8601("2003-09-15T10:34:54")
    

未解决的问题

  • 要使用的命名约定。
  • 错误时引发什么异常?ValueError,还是专门的异常?
  • 你是否应该知道你期望的类型,还是应该由解析器来确定?(例如 parse_iso8601("yyyy-mm-dd") 返回一个 date 实例,但解析“yyyy-mm-ddThh:mm:ss”返回一个 datetime。)是否应该有一个选项来指示在不期望时间时提供了时间,或者在没有提供时间时提供时间,则报错?
  • I18N 和时区是否需要特殊处理?

通用输入解析

返回 datetime 类型的 strptime() 实现是否足够?

XXX 如果是,在此处描述 strptime。现有的纯 Python 实现是否可以轻松地重新定位?

输出格式

并非所有输入格式都需要作为输出格式支持,因为对于 YYYY/MM/DD 等简单内容,正确使用 strftime() 参数非常简单。只需要支持复杂的格式;RFC 2822 是我目前能想到的唯一一个。

选项

  1. 提供预定义的格式字符串,这样你就可以这样写
    import datetime
    d = datetime.datetime(...)
    print d.strftime(d.RFC2822_FORMAT) # or datetime.RFC2822_FORMAT?
    
  2. 在所有对象上提供新方法
    d = datetime.datetime(...)
    print d.rfc822_time()
    

其他语言中的相关功能包括 PHP date 函数(Simon Willison 在 http://simon.incutio.com/archive/2003/10/07/dateInPython 提供的 Python 实现)

参考资料

其他有用的链接

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


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

最后修改: 2025-02-01 08:59:27 GMT