ISO 8601日期/时间/持续时间解析器和格式化程序
项目描述
ISO 8601日期/时间解析器
本模块实现ISO 8601日期、时间和持续时间解析。实现遵循ISO8601:2004标准,并仅实现了标准中提到的日期/时间表示。如果那里没有提到,则被视为不存在,而不是作为允许的选项。
例如,ISO8601:2004从未提到两位数年份。因此,本模块不支持两位数年份。(尽管它可能仍然是有效的ISO日期,因为它并未被明确禁止。)另一个例子是,当没有提供时间区信息时,应将其解释为本地时间,而不是UTC。
由于该模块将ISO 8601日期/时间映射到标准Python数据类型,如date、time、datetime和timedelta,因此无法将所有可能的ISO 8601日期/时间转换为这些类型。例如,Python的date和datetime类不允许日期早于0001-01-01。此外,分数秒限制为微秒。这意味着如果解析器发现例如纳秒,它将四舍五入到微秒。
文档
- 目前有四种解析方法可用。
- parse_time
将ISO 8601时间字符串解析为time对象
- parse_date
将ISO 8601日期字符串解析为date对象
- parse_datetime
将 ISO 8601 日期时间字符串解析为 datetime 对象
- parse_duration
将 ISO 8601 持续时间字符串解析为 timedelta 或 Duration 对象。
- 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 年之前日期的格式字符串。此方法还理解如何格式化 datetime 和 Duration 实例。
安装
此模块可以很容易地使用 Python 标准安装方法安装。
您可以使用 python setup.py install,或者如果您有 setuptools 或 distribute,您也可以使用 easy_install。
限制
解析器接受几种日期时间表示,这些表示根据 ISO 8601 标准应该是无效的。
对于日期和时间一起,此解析器接受基本和扩展格式的混合。例如,日期可以是基本格式,而时间可以接受扩展格式。它还允许在日期时间字符串中使用简短的日期和时间。
对于不完整的日期,选择第一个日期。例如,19 世纪的结果是日期 1901-01-01。
尚未完全支持负 Duration 和 timedelta 值。
更多信息
文档字符串和单元测试应提供有关方法和它们限制的相当详细的信息。
源发布提供了一个 setup.py 脚本,可用于运行包含的单元测试。
源代码可在 http://github.com/gweis/isodate 获得。
更改
0.6.1 (2021-12-13)
支持 python 3.10 ()
最后一个支持 py 2.7 的版本
0.6.0 (2017-10-13)
支持不完整的月份日期(Fabien Loffredo)
在持续时间数学中依赖鸭子类型
支持分数时区的分隔符“:
0.5.4 (2015-08-06)
修复了 Periods 的解析(Fabien Bochu)
使 Duration 对象可哈希(Geoffrey Fairchild)
向持续时间添加了乘法(Reinoud Elhorst)
0.5.1 (2014-11-07)
修复了 Duration 对象的序列化问题
当日期时间字符串中没有“T”分隔符时引发 ISO8601Error(Adrian Coveney)
0.5.0 (2014-02-23)
ISO8601Error 现在是 ValueError 的子类(Michael Hrivnak)
提高跨各种 Python 变体和版本的兼容性
在持续时间中使用分数年和月进行日期数学时引发异常
将 Duraction 对象上的方法 todatetime 重命名为 totimedelta
0.4.9 (2012-10-30)
支持序列化 FixedOffset 实例
确保解析的分数秒以微秒为单位
在格式化微秒时添加前导零(Jarom Loveridge)
0.4.8 (2012-05-04)
修复了与 python 2.5 和 2.6 的单元测试不兼容性问题(在 2.7 和 3.2 上运行良好)
0.4.7 (2012-01-26)
修复了 tzinfo 格式化(从不将 None 传递给 tzinfo.utcoffset())
0.4.6 (2012-01-06)
通过 2to3 增加了对 Python 3 的兼容性
0.4.5 (2012-01-06)
使 setuptools 依赖项可选
0.4.4 (2011-04-16)
修复了 datetime 对象的微秒格式化问题
0.4.3 (2010-10-29)
修复了 %P 格式化和分数的问题(由 David Brooks 提供)
0.4.2 (2010-10-28)
实现了对Duration的单子运算符(由David Brooks提供)
使用‘%P’格式输出分数秒。(部分由David Brooks提供)
0.4.1 (2010-10-13)
修复了timedelta和Duration之间的比较中的错误。
修复了与微秒有关的精度问题(由Tommi Virtanen报告)
0.4.0 (2009-02-09)
添加了解析ISO 8601时区字符串的方法
添加了创建符合ISO 8601格式的字符串的方法
0.3.0 (2009-1-05)
初始版本
待办事项
此待办事项列表包含一些关于缺失功能以及是否要实现它们的想法。此列表可能不完整。
缺失的功能
时间格式化不允许创建分数表示。
ISO区间的解析器。
目前微秒总是填充到6个字符的长度。尾随的0应该是可选的
文档
- parse_datetime
完整文档以显示此函数允许的内容,但ISO禁止的内容,反之亦然。
支持除'T'之外的其他日期和时间分隔符
- parse_date
年份的位数应该始终大于4
不支持0001-01-01之前的日期
- parse_duration
由于parse_date限制,不支持完全支持其他格式
标准持续时间格式完全支持,但限制不是很严格。
- Duration
支持在计算中支持分数年和月
实现w3c顺序关系?(http://www.w3.org/TR/xmlschema-2/#duration-order)
重构以使持续时间数学仅在单个位置
本地化__str__方法(timedelta这样做吗?)
何时Duration为负?
标准化Duration。月份[00-12]和年份]-inf,+inf[
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
isodate-0.6.1.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9 |
|
MD5 | 1a310658b30a48641bafb5652ad91c40 |
|
BLAKE2b-256 | db7ac0a56c7d56c7fa723988f122fa1f1ccf8c5c4ccc48efad0d214b49e5b1af |
isodate-0.6.1-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96 |
|
MD5 | c8a5fcd645030db98daa82b8e56fda89 |
|
BLAKE2b-256 | b6857882d311924cbcfc70b1890780763e36ff0b140c7e51c110fc59a532f087 |