跳转到主要内容

ISO 8601日期/时间/持续时间解析器和格式化工具

项目描述

ISO 8601日期/时间解析器

PyPI version Supported Python versions PyPI downloads GitHub Actions status Codecov Licence

isodate2是isodate的分支

此模块实现了ISO 8601日期、时间和持续时间解析。实现遵循ISO8601:2004标准,仅实现了标准中提到的日期/时间表示。如果标准中没有提到,则被视为不存在,而不是允许的选项。

例如,ISO8601:2004从未提到两位数的年份。因此,本模块不支持两位数的年份。(尽管它可能是有效的ISO日期,因为它没有明确禁止。)另一个例子是,当没有给出时间的时区信息时,它应解释为本地时间,而不是UTC。

由于此模块将ISO 8601日期/时间映射到标准Python数据类型,如datetimedatetimetimedelta,因此无法将所有可能的ISO 8601日期/时间转换为这些类型。例如,Python datedatetime类不允许日期在0001-01-01之前。此外,分数秒限制为微秒。这意味着如果解析器发现例如纳秒,它将四舍五入到微秒。

文档

有五种解析方法可用。

  • parse_time:将ISO 8601时间字符串解析为time对象
  • parse_date:将ISO 8601日期字符串解析为date对象
  • parse_datetime:将ISO 8601日期时间字符串解析为datetime对象
  • parse_duration:将ISO 8601持续时间字符串解析为timedeltaDuration对象。
  • parse_tzinfo:将ISO 8601字符串中的时区信息部分解析为tzinfo对象。

由于ISO 8601允许定义年月作为持续时间,而timedelta不处理年月,因此该模块提供了一个Duration类,它可以几乎像timedelta对象一样使用(有一些限制)。然而,可以将Duration对象转换为timedelta对象。

还有所有支持数据类型的ISO格式化方法。每个xxx_isoformat方法都接受一个格式参数。默认格式始终是ISO 8601扩展格式。这是与datetime.isoformat相同的格式。

  • time_isoformat:旨在创建默认格式为hh:mm:ssZ的ISO时间字符串。
  • date_isoformat:旨在创建默认格式为yyyy-mm-dd的ISO日期字符串。
  • datetime_isoformat:旨在创建默认格式为yyyy-mm-ddThh:mm:ssZ的ISO日期时间字符串。
  • duration_isoformat:旨在创建默认格式为PnnYnnMnnDTnnHnnMnnS的ISO持续时间字符串。
  • tz_isoformat:旨在创建默认格式为hh:mm的ISO时区字符串。
  • strftime:这是一个与Python的strftime基本兼容的重新实现,但只支持可以用于1900年之前日期的格式字符串。此方法还理解如何格式化datetimeDuration实例。

安装

python -m pip install isodate2

限制

  • 解析器接受几种日期时间表示,这些表示根据ISO 8601标准应该是无效的。
  1. 对于日期和时间一起,此解析器接受基本和扩展格式的混合。例如,日期可以是基本格式,而时间可以接受扩展格式。它还允许日期时间字符串中的简短日期和时间。
  2. 对于不完整的日期,选择第一个日期。例如,19世纪的结果是日期1901-01-01。
  3. 尚未完全支持负的Durationtimedelta值。

更多信息

文档字符串和单元测试应提供关于方法和其限制的相当详细的信息。

源发布提供https://github.com/isodate/isodate中的setup.py脚本,可用于运行包含的单元测试。

源代码可在https://github.com/isodate/isodate获取。

另请参阅

isoduration是一个维护良好的库,旨在改进isodate

Python中ISO 8601持续时间的最新处理状态大致限于isodate提供的内容。我们在这里试图解决isodate(如他们在自己的限制部分中所述)的缺点,以及我们对他们界面的几个烦恼,例如在处理类型方面缺乏一致性,以及使用正则表达式进行解析。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

isodate2-0.9.0.tar.gz (31.7 kB 查看哈希值

构建分发

isodate2-0.9.0-py3-none-any.whl (26.5 kB 查看哈希值)

上传时间 Python 3

支持者