Все статьи

Расчёт возраста: почему это не простое вычитание годов

Простой способ посчитать возраст — вычесть год рождения из текущего года. Но этот подход даёт неправильный результат для любого, чей день рождения в текущем году ещё не наступил, а именно от этой цифры зависит, например, продадут ли человеку алкоголь на кассе или пропустят ли на выборы.

Почему простое вычитание годов ошибается

Если человек родился 15 декабря 1990 года, а сегодня 1 января 2024 года, наивное вычисление 2024 - 1990 даст 34 года — хотя на самом деле человеку исполнится 34 лишь почти через год. Точный расчёт должен учитывать, наступил ли день рождения в текущем году, а не только разницу годов.

Правильный алгоритм

Сначала вычисляют разницу годов, а затем сравнивают месяц и день рождения с текущими месяцем и днём. Если день рождения в текущем году ещё не наступил (месяц меньше, или месяц тот же, но день меньше), от результата вычитают единицу.

29 февраля как особый случай

Для людей, родившихся 29 февраля, в невисокосные годы официальным днём рождения обычно считают либо 28 февраля, либо 1 марта — в зависимости от того, как это определено в конкретной стране. Это один из граничных случаев, который часто упускают при написании кода расчёта возраста.

Зачем это нужно

  • Точно рассчитать возраст для формы регистрации с проверкой совершеннолетия (18 лет).
  • Проверить правильность обработки граничных случаев (29 февраля, день рождения сегодня) в своём коде.
  • Быстро узнать точный возраст в годах, месяцах и днях по дате рождения.

Почему в некоторых странах совершеннолетие юридически наступает за день до дня рождения

В праве ряда стран (в частности, Великобритании) действует принцип «нет дробей дня» — человек считается достигшим определённого возраста с первой минуты дня, предшествующего годовщине рождения, поскольку сам день рождения засчитывается как полностью прожитый день. Это чисто юридическая тонкость, которая расходится с бытовым пониманием возраста, но именно на неё, а не на дату в паспорте, опираются некоторые правовые системы при определении точного момента наступления совершеннолетия.

Попробовать инструмент