Python Dateutil 模块

2024 年 08 月 29 日 | 阅读 9 分钟

Python dateutil 模块简介

当我们开始处理需要实时数据的脚本时,我们必须使用 dateutil 模块才能在特定时间检索或安排数据,或输入带有检索时间戳的数据。

考虑到我们必须对检索到的数据进行大量更改,仅依靠默认的 datetime 模块来处理大量脚本并尝试操作日期和时间格式可能是一项艰巨的任务。

幸运的是,开发人员创建了 dateutil 模块来提供简化生活的功能。

在接下来的教程中,我们将深入了解 Python dateutil 模块。Python 模块是包含某些定义和语句的文件。我们可以使用这些模块将大型程序分解为小型段,并将它们导入程序以利用其功能。dateutil 模块是 Python 编程语言中预定义的模块之一,当我们必须执行与特定日期和时间相关的工作时使用。

那么,让我们开始吧。

了解 Python dateutil 模块

Python 编程语言中有一个核心模块,称为 datetime 模块。我们使用此模块以更简单到复杂的方法来操作日期和时间。即使此模块在特定情况下足够,Python dateutil 模块也为 datetime 模块提供了强大的特定扩展。

Python dateutil 模块的主要特点

Python dateutil 模块的主要特点如下:

  1. dateutil 模块支持解析任何字符串格式的日期。
  2. 此模块提供内部最新的世界时区详细信息。
  3. 此模块有助于计算相对差异
  4. 此模块还有助于基于非常灵活的重复规则计算日期。

如何在 Python 中安装 dateutil 模块?

在我们开始使用 dateutil 模块之前,主要目标是在系统上安装该模块。那么,让我们开始安装过程。

我们将使用 pip 安装程序通过在终端中键入以下命令来安装所需的模块。

语法

验证安装

为了检查模块是否已正确安装到系统中,我们可以尝试导入模块并执行程序。

安装完成后,创建一个新的 Python 文件并在其中输入以下语法。

示例

现在,保存文件并在命令提示符下使用以下命令运行该文件。

语法

如果程序运行没有出现任何导入错误,则表示模块已正确安装。否则,建议重新安装模块并参考其官方文档。

使用 Python dateutil 模块

现在,让我们继续使用 Python 编程语言中的 dateutil 模块。

dateutil 模块及其子类

dateutil 模块分为几个子类,如下所示:

  1. easter,
  2. parser,
  3. relativedelta,
  4. rrule,
  5. tz,
    以及更多。

此模块不包含太多子类;然而,在本教程中,我们将只探讨其中一些的功能。

导入必要的模块

由于我们已正确安装模块,现在是时候将这些方法付诸实践并获取输出了。

要开始使用 Python dateutil 模块及其部分功能,我们只需先导入它们。

以下语法显示了所需模块的导入。

示例

说明

在上面的代码片段中,我们导入了 datetime 模块来导入方法。然后,我们从 dateutil 子类导入了一些方法。

datetime 功能

在我们开始 dateutil 模块的编码部分之前,我们必须了解该模块依赖于 datetime 模块。

Python dateutil 模块与 datetime 对象一起工作,这意味着我们必须在开始使用它们之前创建 datetime 对象。

因此,导入 datetime 模块变得有必要。现在,让我们开始使用 dateutil 模块中的一些方法。

Datetime 和 relativedelta

relativedelta 子类扩展了 datetime 模块,为程序员提供了相对于检索到的详细信息来处理日期和时间的功能。

此语句表示我们可以向当前使用的 datetime 对象添加天、月甚至年。它还允许程序员使用 datetime 对象处理时间间隔。

让我们看以下示例来充分理解这个概念。

示例

输出

The Present datetime: 2021-10-20 12:38:19.319256
The Present date: 2021-10-20    

说明

在上面的代码片段中,我们导入了所需的模块,并创建了 datetime 模块的对象来检索当前日期和时间的信息。然后,我们向用户打印了这些详细信息。

现在,让我们使用相对日期来处理获取信息。

示例

输出

Next month: 2021-11-20 12:54:38.805725
Next month, and a week: 2021-11-27 12:54:38.805725
Next month, plus one week, at 4 PM: 2021-11-27 16:54:38.805725
Next Friday: 2021-10-22   

说明

在上面的代码片段中,我们导入了所需的模块,并使用了当前日期和时间的值来查找与相对差异相关的信息,例如下个月的日期和时间、一个月零一周、一个月零一周的下午 4 点以及下周五的日期。

该模块更实际的用途是借助一些小型操作来查找信息。

让我们考虑以下示例来理解这一点。

示例

输出

Last Monday: 2021-10-25
David's Age: 38    

说明

在上面的代码片段中,我们导入了所需的模块。然后,我们使用当前日期和时间的值来查找有关月份最后一天或根据生日计算某人年龄的信息。

Datetime 和 easter

easter 子类用于使用通用复活节日历估算日期和时间,允许程序员相对于各种日历计算 datetime 对象。

该子类很小,只有一个参数,包含三个选项,定义了整个模块。

儒略历,EASTER_JULIAN = 1

东正教日历,EASTER_ORTHODOX = 2

西方日历,EASTER_WESTERN = 3

让我们看以下示例来理解上述日历的工作原理。

示例

输出

Julian Calendar: 1335-04-16
Gregorian Calendar: 1335-04-26
Western Calendar: 1335-04-17    

说明

在上面的代码片段中,我们导入了所需的模块,并使用了 easter 子类来以不同的日历格式打印日期。

Datetime 和 parser

parser 子类用作更强大的日期和时间字符串解析器。此子类能够解析表示日期或时间的多种已知格式。

让我们考虑以下示例来理解这一点。

示例

输出

2005-10-25 11:36:28
2005-10-25 11:36:28
2021-10-25 11:36:28
2021-10-23 11:36:00    

说明

在上面的代码片段中,我们再次导入了所需的模块,并使用了 parser 子类来解析日期和时间字符串。

我们可以提供许多选项,包括时区,本地或显式。

我们可以使用传递到函数中的变量作为默认参数来提取详细信息,以便提供时区、年份和时间。

Datetime 和 rrule

rrule 子类用于分别收集有关 datetime 对象和 datetime 对象重复的信息。

让我们考虑以下示例来理解这一点。

示例

输出

[datetime.datetime(2021, 9, 25, 9, 10), datetime.datetime(2021, 9, 26, 9, 10), datetime.datetime(2021, 9, 27, 9, 10), datetime.datetime(2021, 9, 28, 9, 10), datetime.datetime(2021, 9, 29, 9, 10), datetime.datetime(2021, 9, 30, 9, 10), datetime.datetime(2021, 10, 1, 9, 10), datetime.datetime(2021, 10, 2, 9, 10), datetime.datetime(2021, 10, 3, 9, 10), datetime.datetime(2021, 10, 4, 9, 10), datetime.datetime(2021, 10, 5, 9, 10), datetime.datetime(2021, 10, 6, 9, 10), datetime.datetime(2021, 10, 7, 9, 10), datetime.datetime(2021, 10, 8, 9, 10), datetime.datetime(2021, 10, 9, 9, 10)]
[datetime.datetime(2021, 9, 25, 9, 10), datetime.datetime(2021, 10, 3, 9, 10), datetime.datetime(2021, 10, 11, 9, 10), datetime.datetime(2021, 10, 19, 9, 10)]
[datetime.datetime(2021, 9, 25, 9, 10), datetime.datetime(2021, 10, 2, 9, 10), datetime.datetime(2021, 10, 9, 9, 10), datetime.datetime(2021, 10, 16, 9, 10), datetime.datetime(2021, 10, 23, 9, 10)]
[datetime.datetime(2021, 9, 25, 9, 10), datetime.datetime(2021, 10, 25, 9, 10), datetime.datetime(2021, 11, 25, 9, 10), datetime.datetime(2021, 12, 25, 9, 10), datetime.datetime(2022, 1, 25, 9, 10)]
[datetime.datetime(2021, 9, 25, 9, 10), datetime.datetime(2022, 9, 25, 9, 10), datetime.datetime(2023, 9, 25, 9, 10), datetime.datetime(2024, 9, 25, 9, 10), datetime.datetime(2025, 9, 25, 9, 10)]    

说明

在上面的代码片段中,我们再次导入了所需的模块。然后,我们使用 rrule 子类来收集有关 datetime 对象重复的信息。

dateutil 模块的一个强大功能是,此子类可以允许程序员使用多个调度任务和日历存储创新。