Обновлено:
Как посчитать количество дней между датами
Расчёт количества дней между двумя датами – частая задача для планирования отпуска, определения срока выполнения проекта или простого подсчёта возраста до определённой даты. Это можно сделать быстро с помощью онлайн-инструмента или вручную, если вы понимаете логику процесса.
Калькулятор выше позволяет найти интервал между двумя календарными датами. Просто укажите начальную и конечную даты, и сервис моментально вычислит общее количество прошедших дней. При необходимости можно исключить из расчёта выходные и праздничные дни, чтобы получить количество рабочих дней.
Как посчитать дни вручную?
Если вы хотите разобраться в логике расчёта или реализовать его в коде, существует несколько подходов. Основной принцип – найти разницу между двумя моментами времени и перевести её в дни.
Расчёт полного количества дней
Самый распространённый программный способ – вычисление разницы в миллисекундах с последующим делением на количество миллисекунд в одном дне.
- Найдите разницу в миллисекундах. В большинстве языков программирования даты хранятся как количество миллисекунд, прошедших с 1 января 1970 года (Unix-время). Вычитая одно значение из другого, получаем интервал.
- Переведите миллисекунды в дни. В одних сутках содержится 86 400 000 миллисекунд (1000 мс _ 60 с _ 60 мин * 24 ч).
- Округлите результат. Используйте округление до ближайшего целого в большую сторону (
ceil), чтобы даже неполный день засчитывался как целый.
Пример на JavaScript, который демонстрирует этот принцип hexlet.io:
function daysBetween(date1, date2) {
const oneDay = 1000 * 60 * 60 * 24; // миллисекунд в сутках
const diffInTime = Math.abs(date2 - date1); // абсолютная разница в мс
return Math.ceil(diffInTime / oneDay); // округляем до целого
}
const date1 = new Date('2026-05-01');
const date2 = new Date('2026-05-15');
console.log(daysBetween(date1, date2)); // Результат: 14
Метод Math.abs() гарантирует, что результат всегда будет положительным, независимо от порядка дат.
Расчёт только рабочих дней
Этот метод сложнее, так как требует учёта производственного календаря с официальными выходными и праздничными днями. Нельзя просто вычесть субботы и воскресенья, так как в России праздники, выпадающие на будни, переносятся.
Для точного расчёта в программировании используются специальные методы, которые обращаются к системному календарю. Например, в TypeScript SDK ELMA365 для этого есть метод getWorkingTime, который возвращает количество рабочих часов между двумя датами с учётом всех официальных нерабочих дней tssdk.elma365.com. Полученное количество часов затем делится на стандартную продолжительность рабочего дня (8 часов).
Частые ошибки при расчёте
При самостоятельном подсчёте дней легко допустить ошибку. Вот две самые распространённые:
- Несоответствие часовых поясов. Если вы работаете с датами, в которых указано время (например,
2026-05-01T23:00и2026-05-02T01:00), разница может составить всего 2 часа, хотя календарные дни разные. Всегда приводите даты к началу суток (00:00:00) перед расчётом. - Неверный формат даты. Строковые представления дат могут интерпретироваться по-разному. Используйте стандартный формат
ГГГГ-ММ-ДД(например,2026-05-15), чтобы избежать путаницы.
Выбор метода зависит от вашей задачи. Для быстрой оценки идеально подходит онлайн-калькулятор. Для интеграции в программу или глубокого понимания процесса – ручной расчёт по формулам.
Часто задаваемые вопросы
Как учитывать день начала в расчёте?
Обычно при подсчёте интервала день начала не включается в общее количество. Если вам нужно включить обе даты, просто добавьте 1 к результату, полученному в калькуляторе.
Можно ли посчитать только рабочие дни?
Да, для этого нужен производственный календарь. Наш калькулятор может рассчитать количество рабочих дней между двумя датами, автоматически исключая выходные и праздники.
Почему результаты могут отличаться в разных программах?
Чаще всего это связано с учётом часовых поясов или разным форматом даты. Убедитесь, что обе даты указаны в одном часовом поясе и в формате ГГГГ-ММ-ДД.
Что делать, если конечная дата раньше начальной?
Калькулятор автоматически покажет положительное значение модуля разницы. При ручном расчёте используйте функцию абсолютного значения (abs), чтобы избежать отрицательных чисел.
Похожие калькуляторы и статьи
- Рассчитать дни от даты – калькулятор онлайн
- Расчет времени в днях: формула, примеры, онлайн-калькулятор
- Рассчитать время онлайн с датами: точный калькулятор дней и часов
- Рассчитать срок по датам онлайн – калькулятор разницы в днях и месяцах
- Калькулятор дней онлайн 2026 – быстрый расчёт дат
- Генератор сроков: онлайн-инструмент для расчёта дат и периодов