Какая будет дата через 1000 дней? вход ( дата из консоли в формате Г - М - Д ) - выход дата после прибавления 1000 дней в формате (Д - М - Г) python

После изучения материалов в интернете я написал следующий код:

import datetime
from datetime import date, timedelta

input_date = input()
days = 1000

input_date = date.fromisoformat(input_date)

new_date = input_date + timedelta(days)

print(new_date)

Проблемы следующие: вход 1995-02-25 ожидаемый выход 20-11-1997 (у меня получился выход 1997 - 11 - 21) почему на 1 день больше получилось? Как мне изменить требуемый формат выхода (Д - М - Г)?


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

Автор решения: Stanislav Volodarskiy

1995-02-25 + 1000 дней. 1995 год не високосный, то есть 365 дней. То есть через год будет
1996-02-25 + 635 дней. 1996 год високосный (366 дней), дата наша в феврале. Через год будет
1997-02-25 + 269 дней. Мы в феврале невисокосного года (28 дней). Через месяц будет
1997-03-25 + 241 день. Март – 31 день. Через месяц
1997-04-25 + 210 дней. Апрель – 30 день. Через месяц
1997-05-25 + 180 дней. Май – 31 день. Через месяц
1997-06-25 + 149 дней. Июнь – 30 день. Через месяц
1997-07-25 + 119 дней. Июль – 31 день. Через месяц
1997-08-25 + 88 дней. Август – 31 день. Через месяц
1997-09-25 + 57 дней. Сентябрь – 30 день. Через месяц
1997-10-25 + 27 дней. Октябрь – 31 день. Через месяц
1997-11-25 - 4 дня. За четыре дня до этой даты
1997-11-21

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

почему на 1 день больше получилось?

Библиотеке python, в данном случае, стоит верить. К примеру, независимый заслуживающий доверия калькулятор JD (юлианские дни, тотально применяемые в истории и астрономии), так же подтверждает, ровно 1000:

Calendar Date/Time: 1997-11-21  submitted
Calendar Date/Time: 1997--325 00:00:00
Day of the Week:    Friday
Julian Day Number:  2450773.5000000

Calendar Date/Time: 1995-02-25  submitted
Calendar Date/Time: 1995--56 00:00:00
Day of the Week:    Saturday
Julian Day Number:  2449773.5000000

Как мне изменить требуемый формат выхода (Д - М - Г)?

new_date.strftime("%d-%m-%y") или new_date.strftime("%d-%m-%Y"), в зависимости от того, что это такое за ваше Г. ?

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

модуль datetime работает корректно, вот решение вашей задачи в одну строку, за исключением импорта модуля.

import datetime
print(datetime.datetime.strftime(datetime.datetime.strptime(input('date in format Г-М-Д >> '),'%Y-%m-%d')+datetime.timedelta(days=1000),'%d-%m-%Y'))
→ Ссылка