ToolActToolAct

Калькулятор Разницы Дат

Вычисляет дни, недели, месяцы, годы между двумя датами

Вычислить интервал между двумя датами

Что такое Калькулятор Разницы Дат?

Калькулятор разницы дат измеряет промежуток между двумя календарными датами и показывает его в днях, неделях, приблизительных месяцах, приблизительных годах, а также в часах или минутах. Он полезен для проверки длительности проекта, отпуска, расчетного периода, годовщины, срока хранения данных или простого исторического интервала. Результат — это разница между датами, а не автоматический подсчет с включением обеих крайних дат: с 1 января до 3 января обычно два дня разницы, если правило задачи не требует считать оба дня. Месяцы и годы часто приблизительны, потому что месяцы имеют разную длину. Для рабочих дней, праздников, часовых поясов и юридических сроков нужны отдельные правила.

Как использовать

Как использовать

  1. Введите начальную дату
  2. Введите конечную дату
  3. Нажмите «Calculate interval», чтобы сравнить две даты
  4. Просмотрите результаты: дни, недели, месяцы, годы, часы, минуты, секунды

Правила подсчёта

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

Применение

Точное измерение разницы в днях между двумя датамиВыберите начальную и конечную даты и вычислите интервал в днях с дополнительными итогами по неделям, приблизительным месяцам, приблизительным годам, часам, минутам и секундам. Расчёт следует правилам григорианского календаря, поэтому 1900 год считается невисокосным, а 2000 — високосным, что важно, когда одна из дат приходится на окрестности 29 февраля.
Проверка прошедшего времени для событий и записейИспользуйте для подписок, периодов обслуживания, сроков поездок, хронологии проектов, годовщин, серий обучения и любых записей, где ручной подсчёт по месяцам чреват ошибками. Сохраняйте две исходные даты рядом с результатом, чтобы интервал можно было проверить позже, ведь указанное «36 месяцев» гораздо сложнее аудировать, чем пара исходная дата — конечная дата.
Осторожно используйте приблизительные значения месяцев и летОсновной результат — дни. Значения месяцев и лет — приблизительные сводки, поэтому расчётные периоды, юридический возраст и контрактные правила должны использовать конкретное правило, требуемое контекстом. Используйте приблизительные значения для ориентировки, а не для окончательных политических решений. Номера недель ISO, где неделя 1 содержит первый четверг года, — ещё одна конвенция, которую простой подсчёт дней сам по себе не даёт.
Определитесь с инклюзивным или эксклюзивным подсчётом до обозначения интервалаДля отпусков и испытательных сроков заранее договоритесь, учитываются ли обе граничные даты, затем пометьте результат как «между» или «за период», чтобы отчёты юридического отдела, HR и финотчёта не расходились. Ошибка в один день кажется пустяком на одном интервале, но накапливается в HR-экспортах, payroll и финотчётах, когда конвенция применяется не везде.
Перекрёстная проверка приблизительных месяцев по конкретному календарюКогда расчётный период, испытательный срок или гарантийное окно определены в месяцах или годах, проверьте ту же пару через календарное правило, чтобы убедиться, что приблизительное значение соответствует политике. Смешивание двух единиц в одном отчёте — частый источник контрактных споров, особенно для B2B SaaS-продлений, когда один и тот же клиент на тарифе 30 дней и календарном месяце. Оговорки о годовщине «12 месяцев с даты начала» обычно означают ровно один календарный год, а не 365 дней, поэтому начало 15 января становится 15 января следующего года, а не 14 или 16.

Технический принцип

Точная разница в днях вычисляется как Math.floor((end.getTime() - start.getTime()) / 86_400_000), где 86 400 000 — количество миллисекунд в не-DST 24-часовых сутках. Это даёт эксклюзивный интервал — с 1 января по 3 января разница составляет 2 дня, а не 3, — поскольку вычитание измеряет промежуток между двумя моментами, а не считает календарные клетки. Для инклюзивного подсчёта (с обеими граничными датами) к результату нужно прибавить 1; многие юридические правила, правила отпусков и расчётов требуют именно этого, а ошибка со сдвигом на единицу — самая частая причина расхождений между отчётами HR и бухгалтерии. Недели — это просто days / 7; страница также отображает часы = days * 24, минуты = days * 1440 и секунды = days * 86 400 как производные итоги. Разница в месяцах и годах намеренно помечена как «приблизительная», поскольку календарные месяцы и годы различаются по длине. Простой подход — days / 30.436875 (средний григорианский месяц) и days / 365.2425 (средний григорианский год за 400-летний цикл), что подходит для отчётов и дашбордов, но неверно для контрактов. Для календарно точного подсчёта «X полных месяцев между» алгоритм вычитает компоненты year x 12 + month, а затем уменьшает результат на 1, если конечный день месяца раньше начального — именно так вычисляют большинство библиотек дат (date-fns differenceInMonths, dayjs $.diff('month'), Temporal Duration.from). Вычисление лет имеет ту же особенность: с 2024-02-29 по 2025-02-28 иногда считается как 1 год (с ограничением концом месяца), а иногда как 0 лет 11 месяцев 30 дней, в зависимости от конвенции. Високосные годы следуют григорианскому правилу (делятся на 4, за исключением вековых лет, которые не делятся на 400, поэтому 1900 — обычный, 2000 — високосный, 2024 — високосный). Интервал, включающий 29 февраля, автоматически получает лишний день, поскольку подсчёт дней привязан к миллисекундам от эпохи, а не к календарным полям. Обработка часовых поясов критична, когда две граничные точки имеют разрешение менее суток: вычитание двух значений Date, созданных из строк местного времени, может отличаться на величину местного смещения UTC, а интервал, пересекающий переход на летнее/зимее время, может составить 23 или 25 часов вместо номинальных 24. Проблема Y2038 (переполнение знакового 32-битного Unix time_t 2038-01-19T03:14:07Z) не затрагивает эту страницу, поскольку JavaScript Date использует 64-битный float, способный представлять даты примерно до 100 миллионов дней в обе стороны от эпохи, но нисходящие системы, написанные на 32-битном C, всё ещё требуют внимания.

  • Точные дни = Math.floor((end - start) / 86_400_000); 86,4 млн мс на не-DST сутки.
  • Результат эксклюзивный по умолчанию: с 1 янв по 3 янв = 2 дня; прибавьте 1 для инклюзивного подсчёта (с обеими датами).
  • Приблизительный месяц использует среднее 30,436875 дней; год — 365,2425 дней за 400-летний григорианский цикл.
  • Календарно точная разница в месяцах: (y2-y1)*12 + (m2-m1), затем -1, если конечный день < начального — совпадает с date-fns differenceInMonths.
  • Високосные годы: делятся на 4, но вековые должны делиться на 400 (1900 — нет, 2000 — да, 2024 — да).
  • Переходы на летнее/зимее время создают 23-часовые и 25-часовые календарные сутки; вычитание 24 ч может не равняться одному календарному дню.
  • JavaScript Date — 64-битный float, не подвержен проблеме Unix Y2038 (переполнение 32-битного time_t 2038-01-19 03:14:07 UTC).

Примеры

Два полных календарных года (2025-01-01 — 2026-12-31)

Начало : 2025-01-01
Конец  : 2026-12-31

Дней     : 730
Недель   : 104.29
Месяцев  : ~24.00 (приблизительно)
Лет      : ~2.00 (приблизительно)
Примечание : 2028 — следующий високосный год в диапазоне, поэтому при расширении интервал включает 29 февраля 2028.

Короткий интервал (3 дня)

Начало : 2026-06-11
Конец  : 2026-06-14

Дней     : 3
Часов    : 72
Минут    : 4320
Секунд   : 259200
Включительный счёт (с обоими концами): 4 дня

Длительность проекта через границу года

Начало : 2026-01-15  (старт)
Конец  : 2026-07-20  (запуск)

Дней     : 186
Недель   : 26.57
Месяцев  : ~6.16
Use case : Отчёты о статусе, ретроспектива, сводка по Ганту

Расчёт возраста в днях

День рождения : 1995-03-15
Сегодня       : 2026-06-11

Дней прожито  : 11 411
Лет (прибл.)  : 31,24
Месяцев       : ~374,9
Полезно, когда нужен точный счёт дней (например, для вех)

Нюанс часовых поясов (Токио vs Лос-Анджелес)

Одна и та же календарная дата '2026-07-15' соответствует разным реальным моментам:
  Tokyo  (UTC+9)  -> 2026-07-15 00:00 = 2026-07-14 15:00 UTC
  Los Angeles (UTC-7) -> 2026-07-15 00:00 = 2026-07-15 07:00 UTC
Разница при наивном использовании: около 16 часов — достаточно, чтобы изменить результат на 1 день.
Решение: приведите обе даты к одному часовому поясу перед вычитанием.

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

Как рассчитывается разница между двумя датами?

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

Почему годы + месяцы + дни не складываются точно в общее число дней?

Потому что в месяце от 28 до 31 дня. «1 год, 2 месяца, 5 дней» — это разное количество дней в зависимости от того, сколько дней в задействованных месяцах: 28, 29, 30 или 31. Поле «всего дней» использует чистую календарную арифметику и является самым точным числом.

Включается ли начальный день?

Страница показывает количество без начальной даты — одинаковые даты дают разницу в 0 дней. Если нужен «инклюзивный» подсчёт (например, для бронирования ночей), прибавьте 1 к результату вручную.

Исключаются ли выходные и праздники?

Нет. Эта страница считает каждый календарный день. Для разницы в рабочих днях (с пропуском выходных и опционально праздников) используйте инструмент «Калькулятор рабочих дней».

Почему время выглядит странно после перехода на летнее время?

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

Какой максимальный диапазон дат можно сравнить?

JavaScript Date охватывает ±100 000 000 дней от эпохи Unix, поэтому работает любая пара исторических или будущих дат в пределах примерно ±271 000 лет. Даты до 1582 года используют пролептическую григорианскую арифметику, которая отличается от местного календаря того времени.

Расчёт выполняется локально?

Да. Обе даты и результат остаются в вашем браузере. Ничего не загружается и не записывается в журнал.

Связанные Инструменты

Калькулятор Сложения/Вычитания Дат

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

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

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

Калькулятор Рабочих Дней

Бесплатный онлайн калькулятор рабочих дней. Подсчитывает фактические рабочие дни в диапазоне дат, исключая выходные и праздники. Идеален для планирования проектов.

Инструмент преобразования меток времени

Бесплатный онлайн-конвертер Unix-меток времени в дату и обратно. Поддержка секунд, миллисекунд и нескольких часовых поясов — удобно для отладки и логов.

Таймер обратного отсчета

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

Инструмент преобразования лунного календаря

Онлайн-инструмент для конвертации григорианского календаря в лунный с информацией о знаке зодиака, сезонах и праздниках.