dateutil 模块提供了 Python 中标准的 datetime 模块的强大扩展。
可以使用 pip 从 PyPI 安装 dateutil(请注意,包名与导入名称不同):
pip install python-dateutil
dateutil 在 PyPI 上可用: https://pypi.org/project/python-dateutil/
文档托管在: https://dateutil.readthedocs.io/en/stable/
代码和问题跟踪器托管在 GitHub: https://github.com/dateutil/dateutil/
- 计算相对时间差(下个月、下一年、下周一、月份的最后一周等);
- 计算两个给定日期和/或日期时间对象之间的相对时间差;
- 使用比 iCalendar 规范的超集更灵活的递归规则计算日期。也支持 RFC 字符串的解析。
- 解析几乎任何字符串格式的通用日期;
- 时区(tzinfo)实现,支持 tzfile(5) 格式的文件(/etc/localtime, /usr/share/zoneinfo 等)、TZ 环境变量字符串(所有已知格式)、iCalendar 格式文件、给定范围(在相对时间差的帮助下)、本地机器时区、固定偏移时区、UTC 时区和基于 Windows 注册表时区。
- 内部基于 Olson 数据库的最新世界时区信息。
- 使用西方、东正教或儒略算法计算任何给定年份的复活节星期日日期;
- 全面的测试套件。
以下是一个快照,仅用于了解该包的功能。更多示例请参见文档。
假设您想知道在某个带有“8 月的星期五 13 日”的年份中,下一个复活节还有多少年/月/日等时间,并且您想从“date”的 Unix 系统命令中获取今天的日期。代码如下:
>>from dateutil.relativedelta import * >>from dateutil.easter import * >>from dateutil.rrule import * >>from dateutil.parser import * >>from datetime import * >>now = parse("Sat Oct 11 17:13:46 UTC 2003") >>today = now.date() >>year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year >>rdelta = relativedelta(easter(year), today) >>print("Today is: %s" % today) Today is: 2003-10-11 >>print("Year with next Aug 13th on a Friday is: %s" % year) Year with next Aug 13th on a Friday is: 2004 >>> print("How far is the Easter of that year: %s" % rdelta) How far is the Easter of that year: relativedelta(months=+6) >>print("And the Easter of that year is: %s" % (today+rdelta)) And the Easter of that year is: 2004-04-11
正好提前 6 个月真是太巧了 :)
我们欢迎各种形式的贡献——错误报告、拉取请求(代码、基础设施或文档修复)。有关如何为项目做出贡献的更多信息,请参阅存储库中的 CONTRIBUTING.md 文件。
dateutil 模块由 Gustavo Niemeyer 于 2003 年编写(<gustavo@niemeyer.net>)。
维护者包括:
- Gustavo Niemeyer <gustavo@niemeyer.net> 2003-2011
- Tomi Pieviläinen <tomi.pievilainen@iki.fi> 2012-2014
- Yaron de Leeuw <me@jarondl.net> 2014-2016
- Paul Ganssle <paul@ganssle.io> 2015-
从 2.4.1 版本到 2.8.2 版本,所有源代码和二进制发行版都将由 PGP 密钥签名,该密钥至少已由制作上一个版本的密钥签名。发行版签名密钥的表格如下:
| 发行版 | 签名密钥指纹 |
|---|---|
| 2.4.1-2.8.2 | 6B49 ACBA DCF6 BD1C A206 67AB CD54 FCE3 D964 BEFB |
新发行版可能会有签名标签,但上传到 PyPI 的二进制和源代码分发版将不再附加 GPG 签名。
我们的邮件列表可以在 dateutil@python.org 找到。由于它由 PSF 托管,因此受 PSF 行为准则约束。
2017 年 12 月 1 日之后的所有贡献都根据双重许可发布——要么是 Apache 2.0 许可证,要么是 BSD 3-Clause 许可证。2017 年 12 月 1 日之前的贡献(除非明确重新许可)仅根据 BSD 3-Clause 许可证发布。