Перейти к содержимому

Калькулятор возраста — точный возраст в годах, месяцах и днях

Бесплатный калькулятор возраста: введите дату рождения, чтобы получить точный возраст в годах, месяцах и днях, а также общее количество недель, дней, часов и дату следующего дня рождения.

Калькулятор возраста

Точный возраст
36 лет 7 месяцев 26 дней

Вы родились в Monday

Следующий день рождения: 127 дней (исполняется 37)

Ваш возраст в других единицах

Месяцы
439
Недели
1,912
Дни
13,387
Часы
321,288
Минуты
19,277,280
Секунды
1,156,636,800

Прогресс жизни

Ваш возраст по отношению к условному 80-летнему периоду.

Визуализация возраста3636 / 80 лет080
Калькулятор загрузки...
📚

Документация

Что такое калькулятор возраста?

Калькулятор возраста определяет точный промежуток времени между двумя датами: датой рождения и целевой датой, обычно сегодняшним днём. Результат отображается в годах, месяцах и днях, а также суммарно в месяцах, неделях, днях, часах, минутах и секундах. Возраст можно рассчитать и для даты в прошлом или будущем, чтобы узнать, сколько человеку было или будет лет в этот день.

Как рассчитать возраст

Возраст — это промежуток между двумя календарными датами. Этот промежуток можно корректно описать двумя способами, и каждый из них подходит для разных целей.

Календарный возраст (годы, месяцы, дни)

Так обычно указывают возраст в повседневной жизни: «33 года, 4 месяца и 5 дней». Он определяется в три этапа:

  1. Посчитать полные годы, прошедшие с даты рождения.
  2. От последнего дня рождения отсчитать полные прошедшие месяцы.
  3. Затем отсчитать оставшиеся дни.

Шаг 3 становится сложным в конце месяца, поскольку в месяцах разное количество дней. Человеку, родившемуся 31 января, при расчёте возраста на 1 марта исполнился 1 месяц и 1 день. Через месяц после 31 января наступает 28 февраля (или 29 февраля в високосном году), поскольку 31 февраля не бывает. 1 марта наступает на следующий день. Этот метод, иногда называемый правилом relativedelta по названию библиотеки Python, которая сделала его популярным, переносит дату годовщины на последний день более короткого месяца, чтобы число дней не становилось отрицательным.

Полное истёкшее время (дни, часы, секунды)

Для точного подсчёта прожитого времени обе даты преобразуют в единую временную шкалу и вычисляют разницу в полных днях:

d=⌊t−b86400000⌋d = \left\lfloor \frac{t - b}{86400000} \right\rfloor

где d — количество полных дней, t — целевая дата, а b — дата рождения, причём каждая из них представлена числом миллисекунд, а делитель — это количество миллисекунд в одних сутках.

Перед вычитанием обе даты устанавливаются на полночь по UTC (всемирному координированному времени). Это не позволяет переходам на летнее время добавлять или убирать час и искажать подсчёт дней. Из общего числа дней получают недели, разделив его на 7 и округлив вниз. Число часов, минут и секунд получают, умножив количество дней соответственно на 24, 1 440 и 86 400.

Деление общего числа дней на 365 или 365,25 даёт приблизительный возраст в годах, но не учитывает, какие годы в этом промежутке были високосными. Календарный подсчёт, описанный выше, точен. Календарный возраст используют, чтобы ответить на вопрос «сколько мне лет». Общее число дней или недель подходит для задач, требующих точного измерения прошедшего времени, например для расчёта времени приёма лекарств или отсчёта до важного события.

Разобранный пример

Человек, родившийся 1 января 2000 г., при расчёте возраста на 1 января 2020 г.:

ПоказательЗначение
Календарный возраст20 лет, 0 месяцев, 0 дней
Всего месяцев240
Всего недель1 043
Всего дней7 305
Всего часов175 320
Всего минут10 519 200
Всего секунд631 152 000
День недели рожденияСуббота

Общее число 7 305 дней равно 20 × 365 плюс 5 дополнительных дней високосных лет 2000, 2004, 2008, 2012 и 2016. В каждом из этих лет было по 29 февраля, пришедшемуся на 20-летний промежуток. Поэтому число дней больше простого результата 20 × 365, и при ручном подсчёте легко ошибиться на несколько дней.

Формула расчёта возраста в коде

Описанный выше метод расчёта календарного возраста можно реализовать на большинстве языков программирования. Использовать встроенную библиотеку для работы с датами безопаснее, чем вручную прописывать правила определения високосных лет и продолжительности месяцев.

1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth)     # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days     # total elapsed days
10print(total_days)                      # 7305
11

Microsoft предупреждает, что аргумент "md" может возвращать отрицательное число или неправильное количество дней вблизи границ месяца, поэтому часть формулы с оставшимися днями не всегда соответствует описанному выше правилу переноса даты на последний день месяца.

Часто задаваемые вопросы

Как узнать свой точный возраст? Введите дату рождения, а в качестве целевой даты оставьте сегодняшний день. Результат покажет возраст в годах, месяцах и днях, а также тот же возраст в общем количестве дней, недель, часов и секунд.

Почему два калькулятора возраста дают разные результаты? Обычно различие связано со способом подсчёта оставшихся дней вблизи границы месяца. Калькулятор, который в конце месяца переносит дату на последний день более короткого месяца, как описано выше, может отличаться на один или два дня от калькулятора, который просто делит прошедшее время на 30.

Учитывает ли расчёт високосные годы? Да. Общее число дней включает каждый 29 февраля, приходящийся на промежуток между двумя датами. В году, в котором нет 29 февраля, годовщина рождения в високосный день приходится на 28 февраля, последний день этого месяца. Человеку, родившемуся 29 февраля 1996 г., на 20 февраля 2023 г. было 26 лет, 11 месяцев и 22 дня, а его следующий день рождения наступит через 8 дней, 28 февраля 2023 г..

Можно ли рассчитать возраст для даты в прошлом или будущем? Да. Если указать будущую дату, можно узнать, сколько человеку будет лет в этот день. Если указать дату в прошлом, можно узнать, сколько ему тогда было лет. Дата рождения не может быть будущей, а целевая дата не может предшествовать дате рождения.

Влияют ли часовые пояса на результат? Нет. Перед подсчётом дней обе даты преобразуются в полночь по UTC, поэтому итог не зависит от местоположения пользователя или переходов на летнее время.

Почему число дней отличается от результата деления дней на 365,25? 365,25 — это лишь средняя продолжительность года; такое значение не учитывает, какие именно годы в промежутке были високосными годами продолжительностью 366 дней. Подсчёт полных дней между двумя реальными календарными датами точен.

Источники

  1. Python dateutil — relativedelta, описанное выше правило расчёта месяцев и дней календарного возраста.
  2. Платформа Java — Period.between и ChronoUnit.DAYS.
  3. Microsoft Excel — функция DATEDIF.
  4. MDN Web Docs — Date.
  5. Dershowitz, N. и Reingold, E. M. Calendrical Calculations: The Ultimate Edition. Cambridge University Press, 2018.