
Python dateutil的介绍
在这篇文章中,我们将讨论一个内置的 Python 模块 dateutil。在Python中,dateutil是datetime模块的一个扩展模块,用于显示日期和时间。当我们需要使用datetime模块来显示时区时,这个dateutil模块就会被使用,因为它不支持在时间模块中完成。dateutil在Python中还提供了其他不同的功能,包括计算两个给定的日期和日期时间对象之间的相对三角,另一个功能是该模块用于解析字符串中的日期和时间,以作为日期时间对象。让我们在下面的章节中看到dateutil模块的例子。
Dateutil模块在Python中的工作
在这一节中,我们将看到如何使用dateutil模块以及它的特点和例子。dateutil模块是datetime模块的一个强大的扩展,具有不同的功能,这也是Python中与日期和时间任务有关的内置模块。dateutil模块可以从PyPI上安装,这意味着我们可以从PyPI上下载这个模块,然后安装为
pip install python-dateutil
如果PyPI不可用,上述语句可以在Python 3及以上版本中运行,对上述语句稍作修改,如下。
pip3 install python-dateutil
现在让我们看看dateutil模块和它的功能以及例子。
首先,让我们探讨一下使用dateutil模块计算相对延迟的问题。当我们想显示较晚年份、月份或日期的日期和时间时,就会用到相对延迟。一般来说,relativedelta类型可以应用于当前的日期和时间,以取代一些指定的日期-时间对象或指定一些较晚的时间间隔。让我们看看下面的例子。
例子
假设距离即将到来的下一个节日或事件还有多少年、多少月或多少天,我们可以用relativedelta来打印这个。
例子 #1
代码
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.rrule import *
from dateutil.parser import *
from datetime import *
print("program to demonstrate relative delta of dateutil module:")
now = parse("Sun Jun 14 17:13:46 UTC 2020")
today = now.date()
print("Today is: %s" % today)
year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=15,byweekday=FR)[0].year
print("Year with next Aug 15th on a Friday is: %s" % year)
rdelta = relativedelta(easter(year), today)
print("How far is the event day of that year: %s" % rdelta)
print("And the event of that year is: %s" % (today+rdelta))
输出

在上面的程序中,我们可以看到,我们从dateutil模块中导入了relativedelta。在这个程序中,我们试图打印一些在2020年6月14日(星期日)进行的事件。因此,首先我们使用dateutil模块本身提供的parse()函数,将今天的日期以字符串格式显示为日期和时间对象。然后,我们试图打印下一年的相同日期和时间的相同事件,这将是202年。所以它将计算出还剩下多少年、多少月、多少天。然后它将打印出日期和日子。
现在让我们看看dateutil模块的另一个功能,它是用来解析日期和时间对象中的字符串的格式。让我们在下面的例子中演示parse()函数。
例子 #2
代码
from dateutil import parser
print("Program to demonstrate parse() function of dateutil:")
print("The parsed date and time of the given string is as follows:")
a = 'Sun Jun 14 10:36:28 2020'
print (parser.parse(a))
b = 'Friday, 25. September 2008 10:36AM'
print (parser.parse(b))
c = '3 / 25 / 2020 10:36:28'
print (parser.parse(c))
d = '9 / 15 / 2015'
print (parser.parse(d))
e = '2010-09-2T10:36:28Z'
print (parser.parse(e))
输出

在上面的程序中,我们可以看到,我们正在导入一个解析器模块,该模块有parse()函数,用于将不同字符串格式的给定日期和时间格式转换为特定的日期和时间对象。
现在让我们看看dateutil模块的另一个特点。
例子 #3
代码
from dateutil.rrule import rrule, rruleset, MONTHLY
rules = rruleset()
rules.rrule(rrule(MONTHLY, bymonthday=1, count=3))
rules.rrule(rrule(MONTHLY, bymonthday=2, count=3))
for date in rules:
print(date)
输出

在上面的程序中,我们可以看到另一个使用规则的功能,它被用来显示一个范围内的日期,主要用于递归集的生成。一般来说,它是一个用于实现递归规则文档的模块,包括对结果的缓存支持。
结论
在这篇文章中,我们得出结论,Python中的dateutil模块是一个用于日期和时间相关任务的内建模块。在这篇文章中,我们看到 dateutil 是 datetime 模块的一个扩展。这个 dateutil 模块主要用于将任何字符串格式解析为日期-时间对象,同时也用于显示时区,而单独作为时间模块的 datetime 是不支持时区的。在这篇文章中,我们还看到规则模块使用dateutil模块来显示规则文档的范围或递归。