Python 中的 dateutil 模块使用指南
由 社区 / 开发者
2023 年 5 月 17 日
导航至
本文由 Siddhant Varma 撰写。向下滚动查看作者的简介。
Python 是一种非常灵活的语言。从软件工程到机器学习和数据分析,它无处不在。作为一种多用途的脚本和编程语言,它经常被用来处理和操作数据。因此,当您使用 Python 时,无论您是在分析数据还是编写脚本,您都可能遇到日期和时间戳。
如果您尝试从头开始创建自己的逻辑来处理日期,那么处理日期可能会很具挑战性。为了简化这一过程,Python 提供了 dateutil 模块。在这篇文章中,我们将向您介绍 dateutil 模块,它是什么,以及它是如何工作的。然后,我们将向您展示一些使用 dateutil 模块实现的一些常见日期函数的示例。
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 模块。
现在,为了验证安装并检查 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 属性提供了天数差异。以类似的方式,您可以通过访问差异变量的 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开发者,擅长前端工程。他曾在印度与多个初创公司合作进行扩展,并在教育技术和医疗保健行业中构建产品。Siddhant热衷于教学,擅长写作。他还教授编程给许多毕业生,帮助他们成为更优秀的未来开发者。