📜  Python - 在日期列表中查找连续日期(1)

📅  最后修改于: 2023-12-03 14:45:53.883000             🧑  作者: Mango

Python - 在日期列表中查找连续日期

在许多应用程序中,需要查找连续的日期。例如,可以通过在日期列表中查找缺失的日期来发现数据中的异常值。在 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)]]

这是一个包含两个连续日期列表的列表。