Найти в Дзене

Как вычислить разницу между датами в javascript?

Представим что нам нужно вычислить разницу между двумя датами и показать результат в днях, часах, минутах и секундах. Можно воспользоваться специализированной библиотекой для работы со временем, например moment.js, или понять как это работает и написать свой код. 1. Сначала вычислим разницу между двумя датами в секундах, пускай это будут даты 1 января и 20 февраля: const startDate = new Date("Jan 1, 2025 00:00:00").getTime(); const endDate = new Date("Feb 20, 2025 00:00:00").getTime(); const diff = (endDate - startDate) / 1000; Здесь получаем дату начала и окончания в миллисекундах, высчитываем разницу и делим на тысячу чтобы получить секунды. 2. Из секунд получаем количество дней: const days = Math.floor(diff / (60 * 60 * 24)); Чтобы получить количество дней, делим общее количество секунд на количество секунд в сутках, а результат округляем в меньшую сторону. 3. Далее получаем количество часов: const hours = Math.floor(diff % (60 * 60 * 24) / (60 * 60)); Чтобы получить колич
Оглавление

Представим что нам нужно вычислить разницу между двумя датами и показать результат в днях, часах, минутах и секундах. Можно воспользоваться специализированной библиотекой для работы со временем, например moment.js, или понять как это работает и написать свой код.

1. Сначала вычислим разницу между двумя датами в секундах, пускай это будут даты 1 января и 20 февраля:

const startDate = new Date("Jan 1, 2025 00:00:00").getTime();

const endDate = new Date("Feb 20, 2025 00:00:00").getTime();

const diff = (endDate - startDate) / 1000;

Здесь получаем дату начала и окончания в миллисекундах, высчитываем разницу и делим на тысячу чтобы получить секунды.

2. Из секунд получаем количество дней:

const days = Math.floor(diff / (60 * 60 * 24));

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

3. Далее получаем количество часов:

const hours = Math.floor(diff % (60 * 60 * 24) / (60 * 60));

Чтобы получить количество часов, сначала получаем остаток от деления на сутки, затем результат делим на количество секунд в одном часе, получившееся количество часов округляем в меньшую сторону.

4. Аналогичным образом получаем количество минут и секунд:

const minutes = Math.floor((diff % (60 * 60)) / 60);

const seconds = Math.floor(diff % 60);

Получаем минуты разделив остаток от деления на час на количество минут в одном часе. Получаем секунды как остаток от деления на минуту.

5. В результате получаем такое решение:

const startDate = new Date("Jan 1, 2025 00:00:00").getTime();

const endDate = new Date("Feb 20, 2025 00:00:00").getTime();

const diff = (endDate - startDate) / 1000;

const days = Math.floor(diff / (60 * 60 * 24));

const hours = Math.floor(diff % (60 * 60 * 24) / (60 * 60));

const minutes = Math.floor((diff % (60 * 60)) / 60);

const seconds = Math.floor(diff % 60);