В данном примере цикл многократно (n) раз печатает каждую дату текущего месяца. Но получаю ошибку: "ValueError: day is out of range for month"

Есть цикл, который выводит определенное количество строк с датами. / В данном примере многократно (12) раз печатается каждая дата текущего месяца.

И он даже выводит данные, но так же выводит и ошибку:

"ValueError: day is out of range for month"

Подскажите как исправить?

import datetime

len_special = 12
# цикл для проставления даты
len_total = (len_special*31)
days = 0
for total in range(len_total):
    days += 1
    for iterat in range(len_special):
        datess = datetime.datetime.now().replace(day=days)
        now = datess.strftime('%d.%m.%Y')
        print(now)

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

Автор решения: S. Nick

Sorry, я не понимаю вашей логики, но предложу попробовать следующее:

from datetime import datetime, timedelta

len_special = 12
#??? цикл для проставления даты
len_total = (len_special * 31)                      # ??? 31

to_day = datetime.now()                             # текущая дата и время

for delta, total in enumerate(range(len_total)):
    datess = to_day + timedelta(delta)
    now = datess.strftime('%d.%m.%Y')
    print(f'{now}\n' * len_special)

Update

Можно попросить Вас изменить цикл, нужны все даты текущего месяца с 01 по последнюю, и убрать пробелы между датами. Я попытался он меня их стал в строчку печатать...

from datetime import datetime, timedelta

len_special = 12
#??? цикл для проставления даты
len_total = (len_special * 31)                      # ??? 31

#to_day = datetime.now()                            # текущая дата и время
to_day = datetime.now().replace(day=1)                          # +++

for delta, total in enumerate(range(len_total)):
    datess = to_day + timedelta(delta)
    now = datess.strftime('%d.%m.%Y')
#    print(f'{now}\n' * len_special)
    print(* [f'{now}' for _ in range(len_special)], sep='\n')   # +++
→ Ссылка
Автор решения: SergFSM

Просто напечатать каждую дату текущего месяца по 12 раз можно так:

from datetime import datetime
from calendar import monthrange

len_special = 12
today = datetime.now()
y,m = today.year,today.month
for d in range(1, monthrange(y,m)[1]+1):
    print('\n'.join([f'{d:02d}.{m:02d}.{y:04d}'] * len_special))
→ Ссылка
Автор решения: Namerek
from datetime import datetime, timedelta, date

len_special = 55

print(*[datetime.now() + timedelta(days=i) for i in range(1, len_special + 1)], sep='\n')
#2021-12-17 10:52:25.888090
# ...
#2022-02-09 10:52:25.888168

print(*[date.today() + timedelta(days=i) for i in range(1, len_special + 1)], sep='\n')
#2021-12-17
# ...
#2022-02-09
→ Ссылка