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.floor
或Math.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文档。
例如:“天”,“小时”,“分钟”等
moment.js的CDN可以在这里find:
谢谢。
编辑:
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);