JavaScript-获取两个日期之间的分钟数
如果我有两个日期,如何使用以分钟为单位计算两个日期之间的差异?您可以签出以下代码:JavaScript-获取两个日期之间的分钟数,javascript,datetime,Javascript,Datetime,如果我有两个日期,如何使用以分钟为单位计算两个日期之间的差异?您可以签出以下代码: var today=新日期(); var圣诞节=新日期(“2012-12-25”); var diffMs=(圣诞节-今天);//从现在到圣诞节之间的毫秒 var diffDays=数学楼层(diffMs/86400000);//天 var diffHrs=数学楼层((diffMs%86400000)/3600000);//小时 var diffMins=数学舍入((diffMs%86400000)%36000
var today=新日期();
var圣诞节=新日期(“2012-12-25”);
var diffMs=(圣诞节-今天);//从现在到圣诞节之间的毫秒
var diffDays=数学楼层(diffMs/86400000);//天
var diffHrs=数学楼层((diffMs%86400000)/3600000);//小时
var diffMins=数学舍入((diffMs%86400000)%3600000)/60000);//会议记录
警报(diffDays+“days”、+diffHrs+“hours”、+diffMins+“2009年圣诞节前分钟=”)代码>减去2个日期对象会得到以毫秒为单位的差值,例如:
var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));
Math.abs
用于使用绝对差(因此新日期('2011/10/09 00:00')-新日期('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差=mostDate.diff(minorDate,“分钟”)代码>
第二个参数可以更改为其他参数,请参阅moment.js文档
e、 g.:“天”、“小时”、“分钟”等
此处提供了适用于矩的CDN.js:
谢谢
编辑:
mostDate和minorDate应为力矩类型
编辑2:
对于那些在2020+阅读我答案的人来说,momentjs现在是一个遗留项目
如果你仍然在寻找一个知名的图书馆来做这项工作,我会推荐你
对于那些喜欢与小数字打交道的人
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);
这应该以分钟为单位显示两个日期之间的差异。在浏览器中尝试:
const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')
(currDate - oldDate) / 60000 // 64
这是我在node中解决类似问题的一些乐趣
function formatTimeDiff(date1, date2) {
return Array(3)
.fill([3600, date1.getTime() - date2.getTime()])
.map((v, i, a) => {
a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
}).join(':');
}
const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);
console.log(`Dates:
Start : ${utcStart}
Stop : ${utcEnd}
Elapsed : ${utcDiff}
`);
/*
Outputs:
Dates:
Start : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
Stop : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
Elapsed : 09:37:02
*/
您可以在上看到它的运行,下面的代码适用于我
function timeDiffCalc(dateNow,dateFuture) {
var newYear1 = new Date(dateNow);
var newYear2 = new Date(dateFuture);
var dif = (newYear2 - newYear1);
var dif = Math.round((dif/1000)/60);
console.log(dif);
}
您可以执行以下操作:
获取日期差异(差异以毫秒为单位)
将毫秒
转换为分钟
i-ems/1000/60
守则:
let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");
let msDifference = dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);
它们是日期对象还是字符串?请举一个例子。或者类似于(Math.floor(seconds/60))+':“+((seconds/60)%60)
如果您需要剩余的秒数,我认为这是更好的答案,我注意到当差值超过60分钟时,已接受的答案无法将差值转换为分钟。这也是错误的。12:00不能和00:00一样,因为这是12小时的差异…@Davatar谁说他们是一样的?他只是说12小时-0小时与0小时-12小时是相同的。旧答案,但您永远不应该将新日期(字符串)
与ISO-8601格式字符串以外的格式一起使用。请参阅,或仅使用数字(例如,新日期(2011,9,9,12,0,0)
;请记住月份是以0为基础的)。这很好,很简单,对我很有用。我确实从日期中删除了.getTime(),因为我觉得这更符合逻辑,因为我的想法是比较这两个日期。谢谢。旧的答案,但是您不应该将新日期(字符串)
与ISO-8601格式字符串以外的格式一起使用。请参阅,或仅使用数字(例如,新日期(2011,9,9,12,0,0)
;请记住月份是以0为基础的)。@philk,这就是我如此重视StackOverflow的原因。在许多留言板中,答案只是一个超链接。如果是这样的话,我们就不会有这么好的答案。我在测试这个答案时发现了一个错误:如果在Date对象中设置分钟,DiffHrs可能是错误的。例如,如果圣诞节是“12-25-2015 03:55”,而今天是“12-25-2015 02:00”,则小时数为两小时。应为一小时。数学轮((diffMs%86400000)%3600000)/60000)代码>在差异大于60分钟时不起作用重申此操作不正常,至少持续分钟。例如,它花了62分钟的时间差,由于四舍五入,认为它是2分钟的差。它没有正确回答问题,而是将差分计算为天、小时和分钟的组合……因此,如果差分为1天1小时1分钟,它将显示1天1小时1分钟,而不是1501分钟TypeScript将显示错误“算术运算的左侧和右侧必须是'any'、'number'或enum类型”。要避免错误,请执行(currDate.getTime()-oldDate.getTime())/60000
let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");
let msDifference = dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);