Как выводить следующие пять дат после заданного числа, если число задано определенной строкой?
Число задано в виде строки в таком формате: 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']