Skip to main content

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

项目描述

ISO 8601 日期/时间解析器

PyPI 版本 支持的 Python 版本 PyPI 下载 GitHub 操作状态 编解码器 执照

isodate2 是 isodate 的一个分支

该模块实现 ISO 8601 日期、时间和持续时间解析。该实现遵循 ISO8601:2004 标准,并且仅实现标准中提到的日期/时间表示。如果此处未提及某些内容,则将其视为不存在,而不是被允许的选项。

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

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

文档

有五种解析方法可用。

  • parse_time:将 ISO 8601 时间字符串解析为时间对象
  • parse_date:将 ISO 8601 日期字符串解析为日期对象
  • parse_datetime:将 ISO 8601 日期时间字符串解析为日期时间对象
  • 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值。

更多信息

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

源版本提供了一个setup.py脚本,可用于运行包含的单元测试。

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

也可以看看

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

Python 中 ISO 8601 持续时间处理的最新技术或多或少受限于isodate. 我们在这里试图实现的是解决isodate(如他们自己的限制部分所述)的缺点,以及我们自己对其接口的一些烦恼,例如在处理类型时缺乏统一性,以及使用用于解析的正则表达式。

下载文件

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

源分布

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

已上传 source

内置分布

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

已上传 py3