Як обчислити вік у Python (приклади datetime та dateutil)
Дізнайтеся, як розрахувати вік від дати народження в Python. Включає повні роки, вік станом на певну дату та типові підводні камені, як-от високосні роки та часові пояси.
Як обчислити вік у 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 – це календарний день, і часові пояси можуть зміщувати дату й час по днях.