使用Python的Timedelta月计算日期

在本指南中,我们将学习Python中datetime ,使用timedelta 。 我们将看到如何计算从当前日期或任何其他日期开始的六个月的日期。

让我们潜心学习吧!

Pythondatetime 函数

好吧,首先,我们来看看datetime 函数是如何工作的,有什么缺点限制了我们的功能。你需要知道的第一件事是在你的代码中导入datetime

import datetime

之后,你将创建datetime 的实例。一旦你创建了这个实例,你就可以使用它的算术功能。

你可以减去一天和一个月。看一下下面的代码。

#instance of datetime
date = datetime.datetime(2022,2,1)
#subtracting 1 from the month
date = date.replace(month=date.month-1)
print(date)

输出:

2022-01-01 00:00:00

正如你在上面的代码中所看到的,在算术函数的帮助下,我们从先前设定的日期中减去了一个月。但是,这里有一个问题,如果我们试图从上面的结果中减去一个月,怎么办?

代码会给我们一个错误。请看一下。

date = date.replace(month=date.month-1)

输出:

    date = date.replace(month=date.month-1)
ValueError: month must be in 1..12

datetime 函数不允许我们使用算术函数并减去一整年,因为它不支持。同样,如果我们在当前日期位于12月的最后几天时加1或2,它也会给出同样的错误。

# if you add 1 in date, it will throw an error because it doesn't support it
date= datetime.datetime(2022,12,1)
date_= date.replace(month=date_1.month+1)

输出:

    date = date.replace(month=date.month+1)
ValueError: month must be in 1..12

那么,回到问题上来,我们怎样才能计算出从当前日期或任何其他日期算起六个月的日期呢?答案就在于使用relativedelta

使用relativedelta() ,用Python计算日期

在我们继续在Python代码中使用relativedelta 之前,我们需要安装dateutil ,以便从其中导入relativedelta 。在你的命令提示符下运行以下程序来安装dateutil

pip install python-dateutil

一旦安装完毕,你需要从它那里导入relativedelta

from dateutil import relativedelta

之后,我们需要同时使用datetimerelativedelta 来解决当前的问题。看一下下面的代码。

date = datetime.datetime(2022,1,1)
# created the instance of the datetime and set the current date as 2022,1,1

现在,我们将创建relativedelta 的实例,并将月份的值设置为1

r_date = relativedelta.relativedelta(months=1)

现在,我们需要做的是用relativedelta 的实例减去datetime 的实例。这将给我们带来我们想要的答案。

# if you subtract the relativedelta variable with the date instance, it will work correctly and change the year too.
new_date = date - r_date
print(new_date)

输出:

2021-12-01 00:00:00

同样地,如果我们在日期上加1,就会得到我们想要的输出。

现在我们可以用这个技术从当前日期计算出任何日期。这就回答了我们如何从当前日期开始计算6个月的日期。