Простой способ посчитать возраст — вычесть год рождения из текущего года. Но этот подход даёт неправильный результат для любого, чей день рождения в текущем году ещё не наступил, а именно от этой цифры зависит, например, продадут ли человеку алкоголь на кассе или пропустят ли на выборы.
Почему простое вычитание годов ошибается
Если человек родился 15 декабря 1990 года, а сегодня 1 января 2024 года, наивное вычисление 2024 - 1990 даст 34 года — хотя на самом деле человеку исполнится 34 лишь почти через год. Точный расчёт должен учитывать, наступил ли день рождения в текущем году, а не только разницу годов.
Правильный алгоритм
Сначала вычисляют разницу годов, а затем сравнивают месяц и день рождения с текущими месяцем и днём. Если день рождения в текущем году ещё не наступил (месяц меньше, или месяц тот же, но день меньше), от результата вычитают единицу.
29 февраля как особый случай
Для людей, родившихся 29 февраля, в невисокосные годы официальным днём рождения обычно считают либо 28 февраля, либо 1 марта — в зависимости от того, как это определено в конкретной стране. Это один из граничных случаев, который часто упускают при написании кода расчёта возраста.
Зачем это нужно
- Точно рассчитать возраст для формы регистрации с проверкой совершеннолетия (18 лет).
- Проверить правильность обработки граничных случаев (29 февраля, день рождения сегодня) в своём коде.
- Быстро узнать точный возраст в годах, месяцах и днях по дате рождения.
Почему в некоторых странах совершеннолетие юридически наступает за день до дня рождения
В праве ряда стран (в частности, Великобритании) действует принцип «нет дробей дня» — человек считается достигшим определённого возраста с первой минуты дня, предшествующего годовщине рождения, поскольку сам день рождения засчитывается как полностью прожитый день. Это чисто юридическая тонкость, которая расходится с бытовым пониманием возраста, но именно на неё, а не на дату в паспорте, опираются некоторые правовые системы при определении точного момента наступления совершеннолетия.