JavaScript – 获取两个date之间的分钟数

如果我有两个date,我怎样才能在几分钟之内使用JavaScript来获得这两个date之间的差异?

你可以签出这个代码:

var today = new Date(); var Christmas = new Date("12-25-2012"); var diffMs = (Christmas - today); // milliseconds between now & Christmas var diffDays = Math.floor(diffMs / 86400000); // days var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)"); 

var diffMins = Math.floor((...如果你不想舍入分钟,则舍弃秒数。

减去2个Date对象会给你以毫秒为单位的差异,例如:

 var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00')); 

Math.abs用于能够使用绝对差异(所以new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')给出了相同的结果)。

将结果除以1000会得到秒数。 除以60即可获得分钟数。 要整数分钟,请使用Math.floorMath.ceil

 var minutes = Math.floor((diff/1000)/60); 

在这个例子中,结果将是720

 var startTime = new Date('2012/10/09 12:00'); var endTime = new Date('2013/10/09 12:00'); var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds var resultInMinutes = Math.round(difference / 60000); 

一个简单的函数来执行这个计算:

 function getMinutesBetweenDates(startDate, endDate) { var diff = endDate.getTime() - startDate.getTime(); return (diff / 60000); } 

这个问题很容易用moment.js解决,就像这个例子:

var difference = mostDate.diff(minorDate, "minutes");

第二个参数可以改变为另一个参数,请参阅moment.js文档。

例如:“天”,“小时”,“分钟”等

http://momentjs.com/docs/

moment.js的CDN可以在这里find:

libraries/moment.html

谢谢。

编辑:

mostDate和minorDate应该是一个时刻types。

对于那些喜欢用小数字工作的人

 const today = new Date(); const endDate = new Date(startDate.setDate(startDate.getDate() + 7)); const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24)); const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24); const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60); const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60);