как от даты отнять год? python

срок действия сертификата - 1 год. есть дата окончания в формате yyyy-mm-dd. как получить дату выдачи в формате dd-mm-yyyy, учитывая, что выдача может приходиться на високосный год?


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

Автор решения: Max Watson

Я думаю, что в datetime это учли. Может не совсем верно понял ваш вопрос, но и примеров ваших тоже нет. Поэтому думаю можете начать с этого.

import datetime

def get_day(date, step=0):
    l = date.split("-")
    y = int(l[0])
    m = int(l[1])
    d = int(l[2])
    old_date = datetime.datetime(y, m, d)
    new_date = (old_date + datetime.timedelta(days=step)).strftime('%Y-%m-%d')
    print(new_date)
    return new_date
    
get_day('2019-01-31', 0)   # текущий
get_day('2019-01-31', 365)    # след год
→ Ссылка
Автор решения: Qwertiy
  1. Распарсить дату
  2. Вычесть год
  3. Отформатировать дату

tio.run

from datetime import datetime
from dateutil.relativedelta import relativedelta

cur = datetime.fromisoformat(input())
prev = cur - relativedelta(years=1)

print(cur)
print(prev)
print(prev.strftime("%d-%M-%Y"))
2000-02-29
2000-02-29 00:00:00
1999-02-28 00:00:00
28-00-1999
→ Ссылка
Автор решения: user2240578

Если без учета високосных:

>>> import datetime
>>> datetime.datetime.now()- datetime.timedelta(days=365)
datetime.datetime(2021, 6, 30, 22, 34, 24, 587704)
>>>
→ Ссылка