我有两个Date对象,我想以小时计算差异。
如果小时差异小于18小时,我想将日期对象推送到数组中。
Javascript / jQuery,并不重要;什么效果最好。
答案 0 :(得分:163)
最简单的方法是直接从彼此中减去日期对象。
例如:
var hours = Math.abs(date1 - date2) / 36e5;
减法返回两个日期之间的差异(以毫秒为单位)。 36e5
是60*60*1000
的科学记数法,除以将毫秒差异转换为小时。
答案 1 :(得分:31)
尝试使用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); }
答案 2 :(得分:3)
使用日期对象上的valueOf
来获取时间戳:
var diff = date2.valueOf() - date1.valueOf();
var diffInHours = diff/1000/60/60; // Convert milliseconds to hours