как вычислить разницу между датами в javascript с учетом дней и часов
Ответы
Ivan Gagarinov
22 декабря 2024
Сначала необходимо создать два объекта Date
, представляющих даты, между которыми мы хотим вычислить разницу. Это можно сделать следующим образом:
const date1 = new Date('2023-10-01T12:00:00'); // Первая дата
const date2 = new Date('2023-10-04T15:30:00'); // Вторая дата
Следующим шагом вычитаем одну дату из другой, чтобы получить разницу в миллисекундах:
const differenceInMilliseconds = date2 - date1; // Расстояние между датами в миллисекундах
Для преобразования миллисекунд в дни и часы, необходимо знать, что:
- В одной минуте 60 секунд, в одном часе 60 минут, а в одном дне 24 часа.
- Таким образом, в одном дне 86400000 миллисекунд (24 * 60 * 60 * 1000).
- В одном часе 3600000 миллисекунд (60 * 60 * 1000).
Применим данные вычисления:
const millisecondsInADay = 24 * 60 * 60 * 1000; // 86400000
const millisecondsInAnHour = 60 * 60 * 1000; // 3600000
const daysDifference = Math.floor(differenceInMilliseconds / millisecondsInADay);
const hoursDifference = Math.floor((differenceInMilliseconds % millisecondsInADay) / millisecondsInAnHour);
Теперь у нас есть количество дней и часов, составляющих разницу между двумя датами.
Осталось вывести результат. Это можно сделать, используя шаблонные строки:
console.log(`Разница: ${daysDifference} дней и ${hoursDifference} часов.`);
Вот полный код:
const date1 = new Date('2023-10-01T12:00:00'); // Первая дата
const date2 = new Date('2023-10-04T15:30:00'); // Вторая дата
// Вычисляем разницу в миллисекундах
const differenceInMilliseconds = date2 - date1;
// Определяем количество миллисекунд в дне и часе
const millisecondsInADay = 24 * 60 * 60 * 1000; // 86400000
const millisecondsInAnHour = 60 * 60 * 1000; // 3600000
// Вычисляем количество дней и часов
const daysDifference = Math.floor(differenceInMilliseconds / millisecondsInADay);
const hoursDifference = Math.floor((differenceInMilliseconds % millisecondsInADay) / millisecondsInAnHour);
// Выводим результат
console.log(`Разница: ${daysDifference} дней и ${hoursDifference} часов.`);
0
0