Определить текущий месяц после какого то количества дней
Задание звучит следующим образом:
С 1 января 1990 года по некоторый день прошлo m дней, определить название текущего месяца
Есть такой код, он работает, но только для определения месяца с ограничением пройденных дней. Т.е. если ввести что прошло, к примеру, 366 дней, он выведет else, а нужно чтобы он вывел снова January.
p.s. моя реализация может быть крайне неверная, но это потому что я вообще без понятия как это сделать
lastSeen = int(input())
if 1 < lastSeen < 31:
month = "january"
elif 31 < lastSeen < 59:
month = "February";
elif 59 < lastSeen < 90:
month = "March"
elif 90 < lastSeen < 120:
month = "April"
elif 120 < lastSeen < 151:
month = "May"
elif 151 < lastSeen < 181:
month = "June"
elif 181 < lastSeen < 212:
month = "Jule"
elif 212 < lastSeen < 243:
month = "August"
elif 243 < lastSeen < 273:
month = "September"
elif 273 < lastSeen < 304:
month = "October"
elif 304 < lastSeen < 334:
month = "November"
elif 334 < lastSeen < 365:
month = "December"
else:
month = "Error"
print(month)
Ответы (2 шт):
from datetime import datetime, timedelta
start = datetime(year=1990, month=1, day=1)
lastSeen = int(input())
seen = start + timedelta(days=lastSeen)
print(seen.strftime('%B'))
А чтобы делать Вашим методом нужно заморачиваться самому с високосными годами и перед этими if вычитать где-то 365, где-то 366 за каждый прошедший год. Но тогда надо задаться до какого года после прошедшего события нужна точность. Иначе и этого может быть недостаточно, если речь о тысячах лет.
Если не задумываться о погрешности високосных годов то можно просто добавить:
while lastSeen > 366:
lastSeen = lastSeen - 365
Перед проверкой на январь, соответственно