Python 迭代日期范围
日期范围由起始日期、结束日期和所有中间日期定义。在Python中,我们有一些内置函数,如datetime.date()、range()、timedelta()和delta(),用于迭代日期范围。
让我们以一个例子来说明。
起始日期, 26-06-2023
结束日期, 30-06-2023
因此,日期范围的最终结果为:
26-06-2023
27-06-2023
28-06-2023
29-06-2023
30-06-2023
语法
以下语法在示例中使用-
datetime.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()函数返回两个变量之间的所有日期。这种类型的程序有助于基于搜索构建数学公式。