Что считает этот калькулятор
Калькулятор возраста определяет точный промежуток времени между датой рождения (или любой начальной датой) и выбранной датой отсчёта. Вместо одного числа с дробной частью он раскладывает разницу на полные годы, полные месяцы и оставшиеся дни — именно так, как мы обычно говорим о возрасте: например, «32 года, 4 месяца и 18 дней».
Как пользоваться
Укажите дату рождения, введя отдельно год, месяц и день, а затем дату отсчёта (по умолчанию — сегодняшний день). Нажмите «Рассчитать», и результат покажет полную разбивку. Дата отсчёта обычно должна совпадать с датой рождения или быть позже неё.
Как работает формула
Расчёт начинается с поэлементного вычитания: годы = \(Y_2 - Y_1\), месяцы = \(M_2 - M_1\), дни = \(D_2 - D_1\). Поскольку месяцы имеют разную длину, а годы бывают високосными, два шага «заёма» исправляют возможные отрицательные значения. Если число дней получается отрицательным, мы прибавляем количество дней в месяце, предшествующем дате отсчёта, и уменьшаем счётчик месяцев на единицу:
$$D = D_2 - D_1 + \text{daysInPrevMonth},\quad M = M - 1$$Если после этого отрицательным оказывается число месяцев, мы добавляем 12 и уменьшаем счётчик лет на единицу:
$$M = M_2 - M_1 + 12,\quad Y = Y - 1$$В общем виде разбивка записывается так:
$$\text{Age} = (Y_2 - Y_1)\ \text{years},\ (M_2 - M_1)\ \text{months},\ (D_2 - D_1)\ \text{days (with borrow)}$$Високосные годы (делящиеся на 4, но не на 100, кроме случаев, когда они делятся и на 400) учитываются корректно, поэтому февраль считается равным 28 или 29 дням.
Разбор примера
Дата рождения — 15.01.2000, дата отсчёта — 10.03.2024. Дни: \(10 - 15 = -5\), поэтому занимаем у февраля 2024 года (високосный = 29 дней): \(10 - 15 + 29 = 24\) дня, а число месяцев уменьшается на 1. Месяцы: \(3 - 1 - 1 = 1\). Годы: \(2024 - 2000 = 24\). Результат: 24 года, 1 месяц, 24 дня.
Частые вопросы
Учитываются ли високосные годы? Да — длина февраля и операция «заёма» полностью используют правила високосных лет.
Что будет, если дата отсчёта раньше даты рождения? Результат может оказаться отрицательным; чтобы возраст имел смысл, выбирайте дату отсчёта не раньше даты рождения.
Зачем разбивать результат на годы, месяцы и дни? Так привычнее называть возраст, и это нагляднее, чем одно дробное число лет.
Объяснение ключевых терминов
- Дата рождения
- Более ранняя из двух дат — день, когда человек (или предмет) появился. В формуле она задаёт значения birthYear, birthMonth и birthDay, которые вычитаются из справочной даты.
- Справочная дата
- Дата, к которой вы проводите расчёт (часто — сегодня). Она задаёт toYear, toMonth и toDay. Возраст — это промежуток времени, прошедший от даты рождения до этого момента включительно.
- Високосный год
- Год, содержащий 366 дней, с добавленным 29 февраля. В григорианском календаре год является високосным, если он делится на 4, кроме столетних годов, которые также должны делиться на 400 (поэтому 2000 был високосным, а 1900 — нет). Високосные годы влияют на подсчёт дней, когда 29 февраля попадает внутрь интервала.
- Заимствование из соседней единицы
- Коррекция, которая сохраняет результат неотрицательным. Если разность дней \(D<0\), вы берёте один месяц в долг: добавляете к \(D\) количество дней в предыдущем месяце и уменьшаете \(M\) на 1. Если разность месяцев \(M<0\), вы берёте один год в долг: добавляете 12 к \(M\) и уменьшаете \(Y\) на 1. Это отражает заимствование при обычном вычитании.
- daysInPrevMonth
- Длина (28, 29, 30 или 31 день) календарного месяца, непосредственно предшествующего справочному месяцу — значение, добавляемое к \(D\) при заимствовании дня. Так как длины месяцев варьируются, точное количество дней, которое «завершает» неполный месяц, не фиксировано, поэтому возраст в днях нельзя вывести только из лет и месяцев.
- Истёкшие месяцы и десятичные годы
- Истёкшие месяцы подсчитывают целые завершённые календарные месяцы (например, 18 месяцев), сохраняя реальные границы месяцев. Десятичный год делит общее количество дней на среднюю длину года (например, 365,25), давая значение вроде 1,52 года. Десятичные годы удобны для усреднения, но теряют точную структуру календаря; разбиение на (годы, месяцы, дни) соответствует реальному календарю точно.