Python Dateutil 模块使用指南
作者:社区 / 开发者
2023 年 5 月 17 日
导航至
这篇文章由 Siddhant Varma 撰写。向下滚动查看作者简介。
Python 是一种高度通用的语言。从软件工程到机器学习和数据分析,它无处不在。作为一种多用途脚本和编程语言,它通常用于操作和处理数据。因此,当您使用 Python 时,无论您是在分析数据还是编写脚本,您都可能会遇到日期和时间戳。
如果您尝试从头开始创建自己的逻辑来操作日期,处理日期可能会具有挑战性。为了简化此过程,Python 提供了 dateutil 模块。在这篇文章中,我们将教您关于 dateutil 模块、它是什么以及它如何运作。然后,我们将向您展示一些使用 dateutil 模块可以实现的常用日期函数的常见示例。
Python 中的 dateutil 模块是什么?
dateutil 模块是 Python 中的一个预定义模块,可帮助您操作和处理日期和时间戳。在处理日期时,您可以将其用于多种目的,例如添加日期、解析不同格式的日期、减去日期、计算两个日期之间的差异等。我们将在本文后面的部分探讨一些常见示例。
dateutil 模块是 datetime 模块的扩展。
Python 3 中是否包含 dateutil?
dateutil 模块不是 Python 3 标准库的一部分,但这并不意味着您不能使用它。您可以使用 pip 轻松安装它。安装完成后,您可以像通常使用其他 Python 模块一样,使用标准导入语句将 dateutil 模块导入到您的任何 Python 脚本中。
我们将在下面的部分中向您展示如何在 Python 3 中使用 dateutil 模块。
它是如何工作的?
首先,我们将向您展示 dateutil 在底层是如何工作的,因为它实际上是 datetime 模块的抽象。dateutil 模块构建在 datetime 模块之上,通过向现有函数和类添加一些函数和类。这些函数和类使以各种方式处理日期和时间变得更加容易。例如,dateutil 包含用于解析各种格式的字符串中的日期和时间的函数。
现在,我们将向您展示如何在 Python 3 中安装 dateutil 模块。
在本教程中,我使用的是 pip3 和 Python 3,但您可以按照适用于其他 Python 版本的等效步骤和代码进行操作。首先,通过运行以下命令,使用 pip3 安装 dateutil 模块
pip3 install python-dateutil
运行该命令应该会为您安装 dateutil 模块。
现在,为了验证安装并检查 dateutil 模块是否已正确安装,您可以尝试导入该模块。我正在使用 ipython 在终端中直接运行这些 Python 命令,但您也可以创建一个 .py 文件并运行它。
import dateutil
print(dateutil)
如果 dateutil 以某种方式未正确安装,则上述程序将抛出错误。否则,它应该为您提供 dateutil 模块在您的系统中的路径引用。
使用 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 属性为您提供了 days 数量的差异。以类似的方式,您可以通过访问差异变量上的 months 和 years 属性来查找两个日期之间以月和年为单位的差异。
从日期添加和减去时间
您可能需要的另一个常见的日期操作是从给定日期添加或减去特定时间。我们现在将向您展示如何将特定天数添加到当前日期
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 开发者,精通前端工程。他曾与印度多家初创公司合作进行扩展,并在 Ed-Tech 和医疗保健行业拥有构建产品的经验。Siddhant 热衷于教学,并且擅长写作。他还向许多毕业生教授过编程,帮助他们成为更好的未来开发者。