В данном примере цикл многократно (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