Python 日期范围迭代


日期范围由起始日期、结束日期以及两者之间的所有日期定义。在 Python 中,我们可以使用一些内置函数,例如 `datetime.date()`、`range()`、`timedelta()` 和 `delta()` 来迭代日期范围。

让我们来看一个例子。

起始日期:2023-06-26

结束日期:2023-06-30

因此,最终的日期范围结果为:

2023-06-26

2023-06-27

2023-06-28

2023-06-29

2023-06-30

语法

以下语法在示例中使用:

datetime.date()

`date()` 是 Python `datetime` 库的一个实例函数,它返回日期对象。

range()

内置函数 `range()` 通过返回根据给定长度排序的数字来定义。

timedelta()

`timedelta()` 是一个内置的 Python 函数,它遵循名为 `datetime` 的库,并返回日期之间的差值。

使用 while 循环

在下面的示例中,首先导入将用于设置日期的 `datetime` 模块。接下来,将两个不同的日期初始化到各自的变量中,这些变量将用于计算差值。然后,使用 `while` 循环,它根据 `<=` 运算符设置条件以获取日期范围。使用带有 `+=` 运算符的内置函数 `timedelta()`,它显示所有日期。

示例

import datetime
start = datetime.date(2023, 6, 3)
end = datetime.date(2023, 6, 4)
res_date = start
print("The range dates are:")
while res_date <= end:
    print(res_date)
    res_date += datetime.timedelta(days=1)

输出

 The range dates are: 
 2023-06-03 
 2023-06-04

使用列表推导式

在下面的示例中,程序以包含日期信息的 `datetime` 模块开头。然后,使用列表推导式查找两个日期之间的差值。这可以通过使用 `timedelta` 函数以及递增的天数来完成,从起始日期开始,直到到达结束日期。

示例

import datetime
start = datetime.date(2023, 6, 16)
end = datetime.date(2023, 6, 19)
date_of_range = [start + datetime.timedelta(days=delta) for delta in range((end - start).days + 1)]
print("The range dates are:")
for res_date in date_of_range:
    print(res_date)

输出

The range dates are: 
2023-06-16 
2023-06-17 
2023-06-18
2023-06-19 

使用 timedelta()

在下面的示例中,我们将使用 `for` 循环,其中变量 `delta` 使用内置函数 `range()` 迭代两个初始化日期。接下来,将起始日期与 `timedelta()` 相加,它接受参数 `days=delta`,返回两个日期之间的差值,并生成程序的最终结果。

示例

import datetime
start = datetime.date(2023, 6, 1)
end = datetime.date(2023, 6, 5)
print("The range of dates:")
# Calculate the differences using range()
for delta in range((end - start).days + 1):
    result_date = start + datetime.timedelta(days=delta)
    print(result_date)

输出

The range of dates: 
2023-06-01 
2023-06-02 
2023-06-03 
2023-06-04 
2023-06-05

使用递归函数生成范围列表中的偶数日期

在下面的示例中,程序使用 `datetime` 库来设置日期。然后,使用递归函数,它接受两个参数来设置起始日期和结束日期,这些日期将用于处理日期范围。接下来,使用 `while` 循环,它根据 `<=` 运算符设置差值条件,并使用 `timedelta()` 计算偶数日期。接下来,将起始日期和结束日期初始化到各自的变量中。最后,使用 `for` 循环迭代这两个变量(即 `start_date` 和 `end_date`)以生成偶数日期。

示例

import datetime
# Function definition
def range_date(start, end):
    res_date = start
    while res_date <= end:
        yield res_date
        res_date += datetime.timedelta(days=2)
start_date = datetime.date(2023, 6, 10)
end_date = datetime.date(2023, 6, 20)
print("The range dates are-")
for c_date in range_date(start_date, end_date):
    print(c_date)

输出

The range dates are-
2023-06-10
2023-06-12
2023-06-14
2023-06-16
2023-06-18
2023-06-20

结论

日期范围的迭代指定了两个变量,即起始日期和结束日期。使用 `for` 循环,它根据特定条件和运算迭代日期。然后使用 `timedelta()` 函数返回两个变量之间的所有日期。这种类型的程序有助于构建基于搜索的数学公式。

更新于:2023-08-14

6000+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告