Python 中的 dateutil 模块使用指南

导航至

本文由 Siddhant Varma 撰写。向下滚动查看作者的简介。

Python 是一种非常灵活的语言。从软件工程到机器学习和数据分析,它无处不在。作为一种多用途的脚本和编程语言,它经常被用来处理和操作数据。因此,当您使用 Python 时,无论您是在分析数据还是编写脚本,您都可能遇到日期和时间戳。

如果您尝试从头开始创建自己的逻辑来处理日期,那么处理日期可能会很具挑战性。为了简化这一过程,Python 提供了 dateutil 模块。在这篇文章中,我们将向您介绍 dateutil 模块,它是什么,以及它是如何工作的。然后,我们将向您展示一些使用 dateutil 模块实现的一些常见日期函数的示例。

dateutil-module-python-blog

Python 中的 dateutil 模块是什么?

dateutil 模块是 Python 中的一个预定义模块,它可以帮助您操作和与日期和时间戳一起工作。您可以在处理日期时使用它进行多种目的,例如添加日期、解析不同格式的日期、减去日期、计算两个日期之间的差异等。我们将在文章后面探索一些常见示例。

dateutil 模块是 datetime 模块的扩展。

dateutil 包含在 Python 3 中吗?

dateutil 模块不是 Python 3 的标准库的一部分,但这并不意味着您不能使用它。您可以使用 pip 容易地安装它。一旦这样做,您就可以使用标准的导入语句将 dateutil 模块导入到您的任何 Python 脚本中,就像您通常使用其他 Python 模块一样。

我们将在下面的部分中向您展示如何使用 Python 3 中的 dateutil 模块。

它是如何工作的?

首先,我们将向您展示 dateutil 的工作原理,因为它是 datetime 模块的一个抽象。dateutil 模块是在 datetime 模块的基础上构建的,通过添加一些函数和类到现有的函数和类中。这些函数和类使您以各种方式轻松地处理日期和时间。例如,dateutil 包含解析来自广泛格式的字符串中的日期和时间的函数。

现在,我们将向您展示如何在 Python 3 中安装 dateutil 模块。

对于本教程,我使用 pip3 和 Python 3,但您也可以遵循其他 Python 版本的等效步骤和代码。首先,使用以下命令通过 pip3 安装 dateutil 模块:

pip3 install python-dateutil

运行该命令应为您安装 dateutil 模块。

install-dateutil-module

现在,为了验证安装并检查 dateutil 模块是否正确安装,您可以尝试导入该模块。我在终端中直接使用 ipython 运行这些 Python 命令,但您也可以创建一个 .py 文件并运行它。

import dateutil

print(dateutil)

如果 dateutil 以某种方式未正确安装,上述程序将抛出错误。否则,它应提供 dateutil 模块在您的系统中的路径引用。

dateutil-path

使用 dateutil 模块

您已安装该模块后,让我们通过示例看看如何使用它。

解析日期和时间

dateutil 模块提供了一个 parse 函数,您可以使用它将日期解析为所需的字符串格式。首先,您需要导入 parse 函数

from dateutil.parser import parse

然后,您可以使用 parse 函数返回日期字符串的解析版本。看看以下代码

today = "2022-03-05"

 parsed_today = parse(today)
 print(parsed_today)

当您打印 parsed_today 的值时,您应该得到以下 ISO 格式的日期字符串解析结果

2022-03-05 00:00:00

以下是使用 parse 函数解析相对格式日期字符串的示例

date_relative = "next sunday  at 4pm"

parsed_date = parse(date_relative, fuzzy=True)
print(parsed_date)

在上述代码中,我们将 fuzzy 参数传递为 true 给 parse 函数,这告诉 parse 函数根据传递的日期字符串生成格式化的日期。

计算两个日期之间的差异

现在我们将向您展示如何使用 dateutil 模块计算两个日期之间的差异。这是查找从某个日期到当前日期的相对时间间隔的常见操作。

首先,从 dateutil 模块导入 relativedelta 函数

from dateutil.relativedelta import relativedelta

relativedelta 函数将用于计算两个日期字符串之间的差异。看看以下代码

date1 = parse("2022-03-05")

date2 = parse("2022-03-10")
diff = relativedelta(date2, date1)
print(diff)

让我们看看输出结果

relativedelta(days=+5)

如果您仔细观察,diff 变量揭示了两个日期之间的差异,即五天。但让我们只打印这两个日期之间的天数差异

print(diff.days)

diff 本身是一个对象,而 days 属性提供了天数差异。以类似的方式,您可以通过访问差异变量的 monthsyears 属性来找到两个日期之间的月数和年数差异。

向日期添加或减去时间

您可能需要的另一个常见日期操作是向给定的日期添加或减去时间。现在我们将向您展示如何向当前日期添加特定天数

from datetime import date, timedelta
current_date = date(2022, 3, 5)
delta = timedelta(days=7)
new_date = current_date + delta
print(new_date)

这将为您提供从今天起七天的日期

2022-03-12

太棒了!同样,您也可以从给定的日期减去特定天数

from datetime import date, timedelta
current_date = date(2022, 3, 5)
delta = timedelta(days=7)
new_date = current_date - delta
print(new_date)

这应该会给你一个七天前的日期

2022-02-26

太棒了!

dateutil模块的实际应用

到现在为止,你已经看到了足够的例子来理解dateutil模块的工作原理。但是,你可能会想知道在哪些实际使用场景或真实生活中你会想要使用它?你可以使用dateutil模块来处理时间序列数据库。

时间序列数据库是一种特殊的数据库,它针对存储和查询时间序列数据进行了优化。与只在需要时将常规数据写入数据库一次不同,时间序列数据会在一段时间内记录并存储在数据库中。一些常见的时间序列数据包括需要从物联网传感器测量的数据、一段时间内股票价格的变动、每日更新的天气数据等等。时间序列数据库旨在处理在固定间隔内记录的大量数据。

想了解更多并亲手操作时间序列数据库吗?请查看InfluxDB。它允许你处理高速和高容量的数据,简化时间序列数据管理。

结论

在这篇文章中,你了解了Python中的dateutil模块。你看到了如何使用模块中提供的各种函数来添加、减去和格式化日期。由于dateutil模块本身是从datetime模块派生出来的,因此你也可以使用datetime模块进行一些这些操作。

关于作者

本文由Siddhant Varma撰写。Siddhant是一位全栈JavaScript开发者,擅长前端工程。他曾在印度与多个初创公司合作进行扩展,并在教育技术和医疗保健行业中构建产品。Siddhant热衷于教学,擅长写作。他还教授编程给许多毕业生,帮助他们成为更优秀的未来开发者。