Как получить разницу в часах между двумя объектами даты?
У меня есть два объекта Date, и я хочу рассчитать разницу в часах.
Если разница в часах меньше 18 часов, я хочу надавить объект даты в массив.
Javascript/jQuery, на самом деле не имеет значения; что работает наилучшим образом.
Ответы
Ответ 1
Простейшим способом было бы прямо вычесть объекты даты друг от друга.
Например:
var hours = Math.abs(date1 - date2) / 36e5;
Вычитание возвращает разницу между двумя датами в миллисекундах. 36e5
- это научное обозначение для 60*60*1000
, деление на которое преобразует разницу в миллисекунды в часы.
Ответ 2
Попробуйте использовать getTime
(mdn doc):
var diff = Math.abs(date1.getTime() - date2.getTime()) / 3600000;
if (diff < 18) { /* do something */ }
Используя Math.abs()
, мы не знаем, какая дата самая маленькая. Этот код, вероятно, более уместен:
var diff = (date1 - date2) / 3600000;
if (diff < 18) { array.push(date1); }
Ответ 3
Используйте метку времени, которую вы получаете, вызывая valueOf
в объекте даты:
var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours