Назад до Блогу
3 min read

Як обчислити вік у Python (приклади datetime та dateutil)

Дізнайтеся, як розрахувати вік від дати народження в Python. Включає повні роки, вік станом на певну дату та типові підводні камені, як-от високосні роки та часові пояси.

Як обчислити вік у Python (приклади datetime та dateutil)

Як обчислити вік у Python (приклади datetime та dateutil)

Якщо потрібнорозрахувати вік у Pythonвід дати народження, головне правильно визначити вік: більшість додатків потребуютьроків завершено(повні дні народження), а не лише різниця між роками.

1) Прожитих років (безпечне визначення)

Це повертає кількість повних років від дати народження (DOB). Він віднімає 1, якщо день народження ще не було в поточному році.

from datetime import date

def age_years(dob: date, as_of: date | None = None) -> int:
    if as_of is None:
        as_of = date.today()
    years = as_of.year - dob.year
    before_birthday = (as_of.month, as_of.day) < (dob.month, dob.day)
    return years - 1 if before_birthday else years

print(age_years(date(2000, 10, 5), date(2026, 2, 26)))

2) Вік на конкретну дату (не тільки сьогодні)

Для багатьох випадків використання потрібна дата «станом»: ціни страхування, перевірки відповідності вимогам, шкільні обмеження, звіти. Наведена вище функція вже підтримує це черезas_of.

3) Вивід точного стилю (роки та місяці)

Якщо вам потрібен вихід на зразок "25 років 4 місяці", використовуйтеdateutil.relativedelta(він правильно обробляє тривалість місяця).

from datetime import date
from dateutil.relativedelta import relativedelta

def age_ym(dob: date, as_of: date | None = None):
    if as_of is None:
        as_of = date.today()
    rd = relativedelta(as_of, dob)
    return rd.years, rd.months

print(age_ym(date(2000, 10, 5), date(2026, 2, 26)))

4) Поширені підводні камені (і як їх уникнути)

  • Високосні дні народження:вирішіть, як ви бажаєте ставитися до 29 лютого у невисокосний рік. Багато систем використовують 28 лютого або 1 березня. Поведінка бібліотеки має значення, тому перевірте її.
  • Дати, час і часові пояси:для DOB, переважнdateзакінченоdatetime. Якщо вам потрібно використовувати дату й час, спочатку нормалізуйте час до того самого часового поясу.
  • Майбутні значення DOB або відсутні значення:перевіряти введені дані, щоб уникнути негативного віку або збоїв.

Швидка перевірка (без коду)

Якщо вам потрібен лише один швидкий результат, скористайтеся онлайн-калькулятором:Розрахунок віку онлайн.

Пов'язані посібники

FAQ

Чому іноді помиляється (сьогодні.рік - навч.рік)?

Оскільки він ігнорує, чи був день народження цього року. Ви повинні відняти 1 до дня народження.

Як дату народження використовувати дату й час чи дату?

використанняdateколи можливо. DOB – це календарний день, і часові пояси можуть зміщувати дату й час по днях.