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()` 函数返回两个变量之间的所有日期。这种类型的程序有助于构建基于搜索的数学公式。