Jquery 以小时为单位的日期差异

Jquery Date difference in Hours

我试图在不使用任何第 3 方日期相关库的情况下找出 2 个日期之间的日期差异(以小时为单位)。我使用了下面的代码,但它显示了错误的时间。请提出任何更好的建议或指示来更正此问题。

My fiddle

var FutureDate=new Date('2016-05-08T05:19:05.83');
var TodayDate = new Date();
var t1 = FutureDate.getTime();
var t2 = TodayDate.getTime();
var diffInHours = parseInt((t2-t1)/(24*3600*1000));
alert(diffInHours);

您实际上可以在本机中相互减去日期。

var msIn1Hour = 3600 * 1000;
var TodayDate = new Date();
var FutureDate = new Date('2016-05-08T05:19:05.83');

alert((TodayDate - FutureDate)/msIn1Hour);

注意:我不太清楚您为什么使用 parseInt,因为这是用来将 string 转换为 int。如果要舍入数字,请使用 Math.floorMath.round.

var futureDate = new Date('2016-06-08T05:19:05.83');
var todayDate = new Date();
var milliseconds = futureDate.getTime() - todayDate.getTime();
var hours = Math.floor(milliseconds / (60 * 60 * 1000));
alert('Hours: ' + hours);
  1. 小时 : 分钟 = 1 : 60
  2. 分:秒=1:60
  3. 秒:毫秒 = 1:1000
  4. 小时: 毫秒 = 1 : 60x60x1000

只需从公式中删除除以 24 即可。 24 实际上是将其转换为 difference in days.

t2-t1 = x milliseconds
x/1000 = y seconds
y/3600 = z hours

当你有 z 时你就完成了。所以,你不必除以 24。所以,你可以简单地写

var FutureDate=new Date('2016-05-08T05:19:05.83');
var TodayDate = new Date();
var t1 = FutureDate.getTime();
var t2 = TodayDate.getTime();
var diffInHours = Math.floor((t2-t1)/(3600*1000)); //Removed the 24 here
alert(diffInHours);