📅  最后修改于: 2023-12-03 14:45:53.883000             🧑  作者: Mango
在许多应用程序中,需要查找连续的日期。例如,可以通过在日期列表中查找缺失的日期来发现数据中的异常值。在 Python 中,可以使用 datetime 模块来表示日期和时间,并使用列表来存储日期。
要获取日期列表,可以使用以下代码:
from datetime import date, timedelta
start_date = date(2022, 1, 1)
end_date = date(2022, 1, 10)
delta = timedelta(days=1)
date_list = []
while start_date <= end_date:
date_list.append(start_date)
start_date += delta
这个代码段使用了 datetime 模块中的 date 类来表示日期。它也使用 timedelta 类在日期上添加或减去天数。使用 while 循环,将从开始日期到结束日期之间的每个日期添加到列表中。
要查找连续的日期,可以使用以下代码:
def get_consecutive_dates(date_list):
consecutive_dates = []
current_consecutive_dates = []
for i in range(len(date_list) - 1):
if (date_list[i] + timedelta(days=1)) == date_list[i+1]:
current_consecutive_dates.append(date_list[i])
else:
current_consecutive_dates.append(date_list[i])
if len(current_consecutive_dates) > 1:
consecutive_dates.append(current_consecutive_dates)
current_consecutive_dates = []
if len(current_consecutive_dates) > 1:
current_consecutive_dates.append(date_list[-1])
consecutive_dates.append(current_consecutive_dates)
return consecutive_dates
这个代码段使用 for 循环遍历日期列表。它检查当前日期和下一个日期是否相差一天。如果相差一天,就将当前日期添加到当前连续日期列表中。否则,如果当前连续日期列表中有两个或更多的日期,那么它就被添加到连续日期列表中。最后,如果当前连续日期列表中有两个或更多的日期,那么它就被添加到连续日期列表中。
# Usage
date_list = [date(2022, 1, 1), date(2022, 1, 2), date(2022, 1, 3), date(2022, 1, 5), date(2022, 1, 6), date(2022, 1, 7)]
print(get_consecutive_dates(date_list))
这个代码段的输出应该是:
[[datetime.date(2022, 1, 1), datetime.date(2022, 1, 2), datetime.date(2022, 1, 3)], [datetime.date(2022, 1, 5), datetime.date(2022, 1, 6), datetime.date(2022, 1, 7)]]
这是一个包含两个连续日期列表的列表。