Разница между датами в JavaScript
Чтобы узнать разницу между двумя датами, их можно вычесть друг из друга. Результатом будет количество миллисекунд между моментами времени.
Разность в миллисекундах
const start = new Date(2026, 6, 12, 9, 0);
const end = new Date(2026, 6, 15, 9, 0);
const difference = end - start;
console.log(difference); // 259200000
Если первая дата позже второй, разность будет отрицательной. Когда важна только величина разницы, используйте Math.abs().
const difference = Math.abs(end - start);
Полные дни
В 24 часах 86 400 000 миллисекунд. Разделим разность на это число, чтобы получить количество полных суток.
const millisecondsInDay = 1000 * 60 * 60 * 24;
const days = Math.floor(difference / millisecondsInDay);
console.log(days); // 3
Math.floor() отбрасывает неполный день. Например, разница в 3 дня и 20 часов даст результат 3.
Календарные дни
Полные сутки и календарные дни не всегда совпадают. Между 23:30 одного дня и 00:30 следующего прошел только час, но это уже разные даты в календаре.
Если время не имеет значения, сравните только год, месяц и день.
function getCalendarDaysDifference(first, second) {
const firstDay = Date.UTC(
first.getFullYear(),
first.getMonth(),
first.getDate(),
);
const secondDay = Date.UTC(
second.getFullYear(),
second.getMonth(),
second.getDate(),
);
return Math.abs(secondDay - firstDay) / 86400000;
}
const first = new Date(2026, 6, 12, 23, 30);
const second = new Date(2026, 6, 13, 0, 30);
console.log(getCalendarDaysDifference(first, second)); // 1
Этот вариант подходит для задач вроде количества дней между датами отпуска или проверки, наступил ли следующий календарный день.