Разница между датами в 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

Этот вариант подходит для задач вроде количества дней между датами отпуска или проверки, наступил ли следующий календарный день.