Python 数据库模块简介
每当我们开始处理需要实时数据的脚本时,我们都必须使用 dateutil 模块,以便在特定时间检索或调度数据,或者输入带有检索时间戳的数据。
考虑到我们必须对检索到的数据进行的大量更改,使用大量脚本并尝试在默认日期时间模块的帮助下操作日期和时间格式可能是一项令人生畏的活动。
幸运的是,开发人员创建了 dateutil 模块来提供使生活更轻松的功能。
在下面的教程中,我们将深入了解 Python dateutil 模块。Python 模块是由某些定义和语句组成的文件。我们可以使用这些模块将一个大程序分解成小程序段,然后将它们导入程序中以发挥它们的功能。当我们必须执行与特定日期和时间相关的工作时,Python 编程语言中的 dateutil 模块是这些预定义模块之一。
所以,让我们开始吧。
了解 Python dateutil
模块
Python 编程语言中有一个核心模块,称为 datetime 模块。我们使用这个模块从简单的方法到复杂的方法来处理日期和时间。尽管这个模块对于特定数量的实例来说是足够的,Python 日期时间模块为日期时间模块提供了特别强大的扩展。
Python 数据库模块的主要特征
Python 中 dateutil 模块的主要特点如下:
- dateutil 模块支持任何字符串格式的日期解析。
- 本模块提供内部最新的世界时区详细信息。
- 该模块有助于计算相对增量
- 这个模块还有助于根据非常灵活的重现规则计算日期。
如何在 Python 中安装 dateutil 模块?
在我们开始使用 dateutil 模块之前,主要目标是在系统上安装该模块。那么,让我们开始安装程序。
我们将使用 pip 安装程序,通过在终端中键入以下命令来安装所需的模块:
语法:
$ pip install python-dateutil
验证安装
为了检查模块是否已经正确安装在系统中,我们可以尝试导入模块并执行程序。
安装完成后,创建一个新的 Python 文件,并在其中键入以下语法。
示例:
# importing the required module
import dateutil
现在,保存该文件并在命令提示符下使用以下命令运行该文件。
语法:
$ python <file-name>.py
如果程序运行时没有出现任何导入错误,则模块安装正确。否则,建议重新安装该模块,并参考其官方文档。
使用 Python dateutil
模块
现在,让我们继续使用 Python 编程语言中的 dateutil 模块。
dateutil 模块及其子类
日期模块分为几个子类,如下所示:
- 复活节,
- 解析器,
- 相对而言,
- 统治者!统治者
- tz、 以及更多。
这个模块不包含这么多子类;然而,在本教程中,我们将只探索其中一些函数。
导入必要的模块
既然我们已经正确安装了模块,现在是时候将方法付诸行动并检索输出了。
为了开始使用 Python dateutil 模块和一些模块,我们只需要先导入它们。
以下语法显示了所需模块的导入。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
说明:
在上面的代码片段中,我们已经导入了 datetime 模块来导入方法。然后我们从 dateutil 子类中导入了一些方法。
日期时间功能
在我们进入 dateutil 模块的编码部分之前,我们必须了解该模块依赖于 datetime 模块。
Python dateutil 模块与日期时间对象一起工作,这意味着我们必须在开始使用日期时间对象之前创建它们。
因此,有必要导入日期时间模块。现在,让我们开始使用 dateutil 模块中的一些方法。
Datetime 和 relativedelta
relativedelta 子类扩展了 datetime 模块,为程序员提供了处理与检索到的详细信息相关的日期和时间的功能。
这个语句表示我们可以在当前使用的日期时间对象中插入日、月甚至年。它还使程序员能够使用时间间隔和日期时间对象进行工作。
让我们考虑下面的例子来正确理解这个概念。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
# Creating some datetime objects
present_datetime = datetime.datetime.now()
print("The Present datetime:", present_datetime)
present_date = datetime.date.today()
print("The Present date:", present_date)
输出:
The Present datetime: 2021-10-20 12:38:19.319256
The Present date: 2021-10-20
说明:
在上面的代码片段中,我们已经导入了所需的模块,并创建了日期时间模块的对象来检索当前日期和时间的详细信息。然后,我们为用户打印了这些详细信息。
现在,让我们借助相对日期来获取信息。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
# Creating some datetime objects
present_datetime = datetime.datetime.now()
present_date = datetime.date.today()
# Next month
print("Next month:", present_datetime + relativedelta(months =+ 1))
# Next month, and a week
print("Next month, and a week:", present_datetime + relativedelta(months =+ 1, weeks =+ 1))
# Next month, and a week, at 4 PM
print("Next month, plus one week, at 4 PM:", present_datetime + relativedelta(months =+ 1, weeks =+ 1, hour = 16))
# Next Friday
print("Next Friday:", present_date + relativedelta(weekday = FR))
输出:
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 点以及即将到来的星期五的日期。
这个模块更适用的用途是在一些小操作的帮助下找出信息。
让我们考虑下面的例子来理解同样的事情。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
# Creating some datetime objects
present_datetime = datetime.datetime.now()
present_date = datetime.date.today()
# Finding out the last Monday in the month
print("Last Monday:",present_date + relativedelta(day = 31, weekday = MO(-1)))
# We can also work with datetime objects directly
# Example: Age of David
david_birthday = datetime.datetime(1983, 5, 23, 12, 0)
print("David's Age:", relativedelta(present_datetime, david_birthday).years)
输出:
Last Monday: 2021-10-25
David's Age: 38
说明:
在上面的代码片段中,我们已经导入了所需的模块。然后,我们使用当前日期和时间的值,以便根据某人的生日找到有关该月最后一天或其年龄的信息。
日期时间和复活节
复活节子类用于使用通用复活节日历估计日期和时间,允许程序员计算与各种日历相关的日期时间对象。
子类非常小,只有一个参数和三个定义整个模块的选项。
儒略历,复活节= 1
公历,复活节 _ 东正教= 2
西历复活节 _ 西历= 3
让我们考虑下面的例子来理解上面提到的日历的工作。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
# The Julian Calendar
print("Julian Calendar:", easter(1335, 1))
# The Gregorian Calendar
print("Gregorian Calendar:", easter(1335, 2))
# The Western Calendar
print("Western Calendar:", easter(1335, 3))
输出:
Julian Calendar: 1335-04-16
Gregorian Calendar: 1335-04-26
Western Calendar: 1335-04-17
说明:
在上面的代码片段中,我们已经导入了所需的模块,并使用复活节子类以不同的日历格式打印日期。
日期时间和解析器
解析器子类用作高级日期和时间字符串解析器。这个子类能够解析一个以上描述日期或时间的已知格式。
让我们考虑下面的例子来理解同样的事情。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
# The parser subclass
print(parse("Thu Oct 25 11:36:28 BRST 2005"))
# We can also ignore the timezone which is set to default locally
print(parse("Thu Oct 25 11:36:28 BRST 2005", ignoretz = True))
# We can also not provide a timezone, or a year
# This allows for it to return the current year, with no timezone inclusion.
print(parse("Thu Oct 25 11:36:28"))
# We can also provide variables which consist of the information, as values.
DEFAULT = datetime.datetime(2021, 10, 23)
print(parse("11:36", default = DEFAULT))
输出:
2005-10-25 11:36:28
2005-10-25 11:36:28
2021-10-25 11:36:28
2021-10-23 11:36:00
说明:
在上面的代码片段中,我们再次导入了所需的模块,并使用解析器子类来解析日期和时间字符串。
我们可以提供许多选择,包括时区、本地或明确的。
我们可以使用传递到函数中的变量作为默认参数来提取详细信息,以便提供时区、年份和时间。
日期时间和规则
rrule 子类用于分别收集关于日期时间对象和日期时间对象的重现的信息。
让我们考虑下面的例子来理解同样的事情。
示例:
# importing methods from the datetime module as a base.
import datetime
# importing several methods from the dateutil subclasses.
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.parser import *
from dateutil.rrule import *
# The rrule subclass
# Daily repetition for 15 occurrences
print(list(rrule(DAILY, count = 15, dtstart = parse("20210925T091000"))))
# Repeating based on the interval
print(list(rrule(DAILY, interval = 8, count = 4, dtstart = parse("20210925T091000"))))
# Weekly repetition
print(list(rrule(WEEKLY, count = 5, dtstart = parse("20210925T091000"))))
# Monthly repetition
print(list(rrule(MONTHLY, count = 5, dtstart = parse("20210925T091000"))))
# Yearly repetition
print(list(rrule(YEARLY, count = 5, dtstart = parse("20210925T091000"))))
输出:
[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 子类来收集关于日期时间对象的重现的信息。
dateutil 模块的一大功能是,这个子类可以让程序员处理多个调度任务和日历存储创新。