Подтвердить что ты не робот

Как получить разницу в часах между двумя объектами даты?

У меня есть два объекта Date, и я хочу рассчитать разницу в часах.

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

Javascript/jQuery, на самом деле не имеет значения; что работает наилучшим образом.

4b9b3361

Ответ 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