Два верных ответа
У вопроса «сколько человеку лет» есть календарный ответ и ответ в продолжительности, и показаны оба, потому что разным задачам нужны разные:
- Календарный — 36 лет, 3 месяца, 13 дней. Так говорит человек.
- Всего дней — 13 254. Так считает начисление процентов, страховая таблица или расчёт дозировки.
Одно в другое чисто не переводится, потому что месяцы не одинаковой длины.
Правило займа
Когда день расчётной даты в месяце раньше дня рождения, занимается месяц и прибавляется его настоящая длина. С 31 января по 1 марта занимаются 28 или 29 февральских дней. Именно это делает ответ таким, каким его произнёс бы человек, а не таким, какой выдаёт наивное деление.
Почему важна работа с часовыми поясами
Вычитание двух локальных меток времени для подсчёта дней ломается всякий раз, когда между ними случился перевод часов: одни сутки оказываются длиной 23 или 25 часов, и деление округляется не туда. Подсчёт по полуночи UTC снимает проблему целиком — поэтому осенний промежуток здесь не возвращается на день короче.
Вопросы
Как считаются месяцы?+
Так, как считает человек: полными календарными месяцами, занимая дни из предыдущего месяца, когда нужно. С 31 января по 1 марта — это месяц и один день, а не 29 дней, делённые на 30.
Учитываются ли високосные годы?+
Да. Дни считаются по полуночи UTC, поэтому високосный день — обычный день, а перевод часов не может сдвинуть итог. У родившихся 29 февраля в невисокосные годы день рождения считается на 1 марта.
Можно посчитать возраст на прошлую или будущую дату?+
Да — расчётную дату можно поставить любую. Именно это делает инструмент полезным для проверки права на что-либо, страховых расчётов и вопроса «сколько ему было, когда».
Почему общее число дней не равно годам × 365?+
Из-за високосных лет. За 36 лет набегает девять лишних дней. Умножение на 365 занижает, на 365,25 — завышает для большинства промежутков. Точен только подсчёт настоящих календарных дней.