检查日期是否在未来10天内(Python)

1 投票
1 回答
54 浏览
提问于 2025-04-14 16:18

我在写代码的时候遇到了一个问题。我有一个日期的列表,我想把这个列表中接下来10天内的所有日期,放到另一个列表里。但是我的代码没有按照我预期的那样工作。

代码:

    """
    Logic to sort into dates in the next 10 days
    -> Creates timedelta with 10 days, future date
    -> Checksif there is an date in the next days, which is a public holiday
    """
    list_upcoming_raw = []
    ten_days = timedelta(days=10)
    future_date = datetime.datetime.now() + ten_days
    today = datetime.datetime.now()

    for i in data_list:
        date = datetime.datetime.strptime(i, '%y%m%d')
        if date <= future_date and date >= today:
            list_upcoming_raw.append(date.date())
    list_upcoming_raw.sort()

    start_date = None
        end_date = None
        list_upcoming = []
        for date in list_upcoming_raw:
            if end_date is None or date == end_date + timedelta(days=1):
                end_date = date
            else:
                 if start_date is not None:
                    list_upcoming.append(f"{start_date.strftime('%d.%m.%Y')}")
                start_date = date
                end_date = date

        if start_date is not None:
            list_upcoming.append(f"{start_date.strftime('%d.%m.%Y')}-{end_date.strftime('%d.%m.%Y')}")

列表里面的内容示例:

231002
231003
231004
231005
231006
231009
231010
231011
231012
231013
231030
231031
240223
240328
240329
240401
240402
240403
240404
240405
240501
240508
240509
240510
240520
240521
240620
240621
240624
240625
240626
240312
240313
240314
240315

谢谢你的帮助!

1 个回答

2

这是修正后的代码:

import datetime

# Example list of dates in string format
data_list = [
    '240223', '240328', '240329', '240401', '240402', '240403',
    '240404', '240405', '240501', '240508', '240509', '240510',
    '240520', '240521', '240620', '240621', '240624', '240625', '240626'
]

# Initial setup
list_upcoming_raw = []
ten_days = datetime.timedelta(days=10)
future_date = datetime.datetime.now() + ten_days

# Process each date in the data list
for i in data_list:
    date = datetime.datetime.strptime(i, '%y%m%d')
    
    # Check if the date is within the next 10 days
    if date <= future_date:
        list_upcoming_raw.append(date.date())

list_upcoming_raw.sort()

for d in list_upcoming_raw:
    print(d)

撰写回答