Как получить последний год рождения с датой рождения (Python)

#python

#питон

Вопрос:

Я хочу, чтобы в прошлом году кто-то отмечал свой день рождения с датой своего рождения.

пример:

 if my date of birth is 12/12/1971  and the date know is 4/12/2021  so my last birthday was in 12/12/2020  so the year is equal to 2020   

пример2:

 if my date of birth is 04/04/2005  and the date know is 4/12/2021  so my last birthday was in 04/04/2021  so the year is equal to 2021   

это мой код:

 def selfYear(birthdate):  today = date.today()  birthday = birthdate[0]  birthmonth = birthdate[1]  birthyear = birthdate[2]  currentDate = today.strftime("%d/%m/%Y")  currentDate.split('-')  

кто-нибудь может помочь мне разобраться в этом

Комментарии:

1. Как ваш код связан с проблемой?

2. Создайте свой день рождения на этот год; если это произойдет после сегодняшнего дня, сделайте резервную копию на год.

3. когда я думаю об этом, это не так

4. вы можете буквально просто передать свой DOB в виде строки и заменить год через birthdate.replace(birthday.split('-')[-1], time.strftime('%Y')) (заменить » — » на что-либо, с чем дата будет разделена, например, дд-мм-гг или дд/мм/гг

Ответ №1:

Вычислите дату рождения текущего года и проверьте, сделано это уже или нет, а затем верните значение хорошего года

 def last_birthday(birthdate):  today = date.today()  if birthdate.replace(year=today.year) lt;= today:  return today.year  return today.year - 1   print(last_birthday(date(1971, 12, 12))) # 2020 print(last_birthday(date(2005, 4, 4))) # 2021  

С помощью автоматического преобразования True -gt; 1, False -gt; 0 вы могли бы сделать

 def last_birthday(birthdate):  today = date.today()  return today.year - (birthdate.replace(year=today.year) gt; today)  

Ответ №2:

Вы можете использовать этот date.replace метод.

 def last_birthday(birthday:date):  current_year = date.today().year  birthday.replace(year=current_year)  if birthday gt; date.today():  birthday.replace(year=current_year-1)  return birthday.year  

Комментарии:

1. Запрос был на год, а не на дату.

2. Исправленный. Я все еще думаю, что в большинстве случаев будет использоваться вся дата, поэтому я оставил логику прежней.