Перейти к основному содержимому
LibraTool logoLibraTool

Калькулятор разницы дат — бесплатно

Вычисляйте точную разницу между двумя датами — годы, месяцы, дни, недели, рабочие дни (без выходных), часы и минуты.

Работает офлайн после загрузки

Быстрые пресеты

Выберите обе даты, чтобы увидеть разницу.

Частые применения

  • Рассчитайте дни до срока родовОбратный отсчет до предполагаемой даты рождения ребенка. Узнайте точно, сколько недель, дней и часов до большого дня.
  • Дни до вашего отпускаОбратный отсчет до поездки с рабочими днями, общим количеством дней и оставшимися неделями в целях планирования.
  • Рабочие дни до сроков проектаРассчитайте точное количество рабочих дней (исключая выходные) между сегодняшним днем и сроком проекта.
  • Рассчитайте дни годовщины вместеУзнайте точно, сколько дней, месяцев и лет вы были вместе с кем-то особенным.
  • Калькулятор разницы в возрасте между двумя людьмиРассчитайте точную разницу в возрасте между двумя днями рождения, разница в годах, месяцах и днях.

Как это работает

Весь расчёт выполняется полностью в браузере с использованием написанной вручную арифметики UTC — без внешней библиотеки, без запроса к серверу. Инструмент разбирает строки ГГГГ-ММ-ДД на компоненты календаря, вычисляет разницы, используя временные метки в миллисекундах Date.UTC(), чтобы избежать дрейфа перехода на летнее время, и итерирует день за днём для подсчёта рабочих дней понедельник–пятница.

  1. 1
    Безопасный разбор даты
    Каждая строка даты проверяется регулярным выражением, затем реконструируется через Date.UTC() — а не new Date(строка) — так что пользователи западнее UTC никогда не видят сдвиг дня недели, вызванный интерпретацией браузером ввода даты только в местном часовом поясе.
  2. 2
    Вычитание в миллисекундах UTC
    Две календарные даты преобразуются в временные метки полночи UTC с Date.UTC(y, m, d). Целочисленное деление на 86 400 000 мс даёт точное количество целых дней, невосприимчивое к переходам на летнее время, которые иначе могли бы заставить день казаться длящимся 23 или 25 часов.
  3. 3
    Разбивка календаря и подсчёт рабочих дней
    Написанная вручную декомпозиция год/месяц/день обрабатывает неравномерности длины месяца (заимствуя дни из предыдущего месяца при необходимости). Отдельный цикл проходит по каждому дню UTC между двумя датами и увеличивает счётчик только для понедельника–пятницы (getUTCDay() !== 0 или 6), производя точный итог рабочих дней независимо от локали.
  4. 4
    Результаты отображены во всех единицах
    Итоги форматируются с помощью toLocaleString(), используя локаль страницы для группировки цифр с учётом локали, затем показываются одновременно как годы/месяцы/дни, всего дней, рабочих дней, недель, часов и минут. Текущая пара дат записывается в URL через history.replaceState, так что любой результат можно добавить в закладки или поделиться как прямую ссылку.

Похожие инструменты

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