Как выводить следующие пять дат после заданного числа, если число задано определенной строкой?

Число задано в виде строки в таком формате: text = '01-09-2021'

def checklist(text, context):
    list_date = text.split('-')
    year = list_date[2]
    month = list_date[1]
    check_list = [text]
    for i in range(2, 6):
        new_date = datetime.date(int(year), i, int(month)).strftime('%m-%d-%Y')
        check_list.append(new_date)
    return month, year, check_list
checklist=checklist(text=text,context={})
print(checklist[2])

Написал вот такой код, но он не универсален, так как показывает корректно только с 1 -10 число, а дальше выводит неправильные даты.

Исходная задача стоит, добавить в список пять следующих дней в формате заданной даты 01-01-2021 (день - месяц-год), плюс надо учесть, что с 28 числа месяца будет менять месяц.


Ответы (2 шт):

Автор решения: Эникейщик

Если 01-09-2021 это первое сентября, то формат должен быть

.strftime('%d-%m-%Y')

А для перевода строки в дату используйте .strptime().

→ Ссылка
Автор решения: MaxU

Воспользуйтесь встроенной арифметикой для дат.

Пример:

from datetime import datetime as DT, timedelta

text = "25-02-2020"
list_date = DT.strptime(text, "%d-%m-%Y")
res = [(list_date + timedelta(days=d)).strftime("%d-%m-%Y") for d in range(2, 10)]
print(res)

результат:

['27-02-2020', '28-02-2020', '29-02-2020', '01-03-2020', '02-03-2020', '03-03-2020', '04-03-2020', '05-03-2020']
→ Ссылка