Как посчитать количество дней между датами
Расчёт количества дней между двумя датами – частая задача для планирования отпуска, определения срока выполнения проекта или простого подсчёта возраста до определённой даты. Это можно сделать быстро с помощью онлайн-инструмента или вручную, если вы понимаете логику процесса.
Калькулятор выше позволяет найти интервал между двумя календарными датами. Просто укажите начальную и конечную даты, и сервис моментально вычислит общее количество прошедших дней. При необходимости можно исключить из расчёта выходные и праздничные дни, чтобы получить количество рабочих дней.
Как посчитать дни вручную?
Если вы хотите разобраться в логике расчёта или реализовать его в коде, существует несколько подходов. Основной принцип – найти разницу между двумя моментами времени и перевести её в дни.
Расчёт полного количества дней
Самый распространённый программный способ – вычисление разницы в миллисекундах с последующим делением на количество миллисекунд в одном дне.
- Найдите разницу в миллисекундах. В большинстве языков программирования даты хранятся как количество миллисекунд, прошедших с 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), чтобы избежать путаницы.
Выбор метода зависит от вашей задачи. Для быстрой оценки идеально подходит онлайн-калькулятор. Для интеграции в программу или глубокого понимания процесса – ручной расчёт по формулам.
Часто задаваемые вопросы
Как учитывать день начала в расчёте?
Можно ли посчитать только рабочие дни?
Почему результаты могут отличаться в разных программах?
Что делать, если конечная дата раньше начальной?
Похожие калькуляторы и статьи
- Калькулятор дней онлайн 2026: расчёт дат и разницы
- Генератор сроков: онлайн-инструмент для расчёта дат и периодов
- Калькулятор дат между датами – онлайн расчёт
- Калькулятор месяцев: сколько месяцев между датами
- Сколько лет калькулятор | Рассчитать возраст онлайн
- Расчёт между датами: дни, недели, месяцы онлайн