📜  如何在Python中的两个日期之间迭代数月?

📅  最后修改于: 2022-05-13 01:55:33.119000             🧑  作者: Mango

如何在Python中的两个日期之间迭代数月?

在本文中,我们将讨论如何使用Python在两个日期之间迭代几个月。

我们可以使用timedeltarrule方法在两个日期之间迭代几个月。

方法一:使用timedelta迭代

timedelta() 用于计算日期的差异,也可用于Python中的日期操作

例子:

但是使用 timedelta 我们不能完美地在日期之间迭代几个月,因为这里我们每个月添加 31 天。但是每个月都不会有确切的 31 天。有些月份有 30 甚至 28、29。为了解决问题,rrule 采取了有助于在特定时间段内在日期之间进行迭代的行为。

代码

Python3
# import necessary packages
from datetime import datetime, timedelta
 
# date initialisation
startDate = datetime(2020, 1, 10)
endDate = datetime(2020, 4, 20)
 
# stores 31 days that can be added
addDays = timedelta(days=31)
 
while startDate <= endDate:
    print(startDate)
    # add a month
    startDate += addDays


Python3
# import necessary packages
from datetime import datetime
from dateutil import rrule
 
# dates
start_date = datetime(2021, 1, 1)
end_date = datetime(2022, 1, 1)
 
for dt in rrule.rrule(rrule.MONTHLY, dtstart=start_date, until=end_date):
    print(dt)


Python3
# import necessary packages
from datetime import datetime
from dateutil import rrule
 
# dates
start_date = datetime(2021, 1, 1)
end_date = datetime(2022, 1, 1)
 
for dt in rrule.rrule(rrule.YEARLY, dtstart=start_date, until=end_date):
    print(dt)


输出
2020-01-10 00:00:00
2020-02-10 00:00:00
2020-03-12 00:00:00
2020-04-12 00:00:00

方法二:规则

rrule 是 dateutil 库中的一个包,该包包含一个方法也是rrule ,它以 dtstart、直到和特定时间段作为参数,分别是开始日期、结束日期和基于迭代的时间段。具体时间段是每周、每月、每年等。

注意:当您想要在日期之间迭代几个月时,请使用 MONTHLY。

句法:

rrule(rrule.MONTHLY, dtstart=start_date, until=end_date)

例子:

使用rrule在日期之间迭代数月

Python3

# import necessary packages
from datetime import datetime
from dateutil import rrule
 
# dates
start_date = datetime(2021, 1, 1)
end_date = datetime(2022, 1, 1)
 
for dt in rrule.rrule(rrule.MONTHLY, dtstart=start_date, until=end_date):
    print(dt)
输出
2021-01-01 00:00:00
2021-02-01 00:00:00
2021-03-01 00:00:00
2021-04-01 00:00:00
2021-05-01 00:00:00
2021-06-01 00:00:00
2021-07-01 00:00:00
2021-08-01 00:00:00
2021-09-01 00:00:00
2021-10-01 00:00:00
2021-11-01 00:00:00
2021-12-01 00:00:00
2022-01-01 00:00:00

例子:

使用 rrule 在日期之间迭代数年。

Python3

# import necessary packages
from datetime import datetime
from dateutil import rrule
 
# dates
start_date = datetime(2021, 1, 1)
end_date = datetime(2022, 1, 1)
 
for dt in rrule.rrule(rrule.YEARLY, dtstart=start_date, until=end_date):
    print(dt)
输出
2021-01-01 00:00:00
2022-01-01 00:00:00