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。)如果在不需要时间的情况下提供了时间,或者在需要时间的情况下没有提供时间,是否应该有一个选项来发出错误信号?
  • 国际化需要任何特殊处理吗?对于时区呢?

通用输入解析

是否只需要一个返回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

上次修改:2023年9月9日17:39:29 GMT