Javascript 计算两个时间值之间的时间差(以分钟为单位)

Javascript 计算两个时间值之间的时间差(以分钟为单位),javascript,html,date,time,Javascript,Html,Date,Time,我编写了以下脚本来查找两个时间值之间的时间差,并在相差10分钟时执行一个函数。在脚本中,变量h1、m1和s1是第一次的小时、分钟和秒值,h2、s2和m2是第二次的小时、分钟和秒值 比如说 h1 = 10 m1 = 55 s1 = 00 h2 = 11 m2 = 05 s2 = 00 脚本当前检查h1是否等于h2。如果是,则找到m2和m1之间的差异。如果该差值为10,则执行该函数 //........setting the current time........// var d1 = new

我编写了以下脚本来查找两个时间值之间的时间差,并在相差10分钟时执行一个函数。在脚本中,变量h1、m1和s1是第一次的小时、分钟和秒值,h2、s2和m2是第二次的小时、分钟和秒值

比如说

h1 = 10
m1 = 55
s1 = 00

h2 = 11
m2 = 05
s2 = 00
脚本当前检查h1是否等于h2。如果是,则找到m2和m1之间的差异。如果该差值为10,则执行该函数

//........setting the current time........//
var d1 = new Date();
var h1 = d1.getHours();
var m1 = d1.getMinutes();
var s1 = d1.getSeconds();

//if the hour, minute or second is a single digit number, add a zero before it//
if (h1 < 10) {
    h1 = "0"+ h1;
}

if (m1 < 10) {
    m1 = "0" + m1;
}

if (s1 < 10) {
    s1 = "0" + s1;
}

var now = h1 + ":" + m1 + ":" + s1;

//........setting the target time........//
var d2 = new Date(2018, 8, 16, 11, 05, 00);
var h2 = d2.getHours();
var m2 = d2.getMinutes();
var s2 = d2.getSeconds();

//if the hour, minute or second is a single digit number, add a zero before it//
if (h2 < 10) {
    h2 = "0" + h2;
}

if (m2 < 10) {
    m2 = "0" + m2;
}

if (s2 < 10) {
    s2 = "0" + s2;
}

var time = h2 + ":" + m2 + ":" + s2;

//........Calculating the difference........//
if (h1 == h2) {
    var diff = m2 - m1;
        if ((diff == 10)) {
            document.getElementById("diff").innerHTML = diff;
            move();
    }
}
设置当前时间// var d1=新日期(); var h1=d1.getHours(); var m1=d1.getMinutes(); var s1=d1.getSeconds(); //如果小时、分钟或秒是一位数字,请在其前面加一个零// 如果(h1<10){ h1=“0”+h1; } 如果(m1<10){ m1=“0”+m1; } 如果(s1<10){ s1=“0”+s1; } var now=h1+“:”+m1+“:”+s1; //……设定目标时间// var d2=新日期(2018年8月16日11月05日00分); var h2=d2.getHours(); var m2=d2.getMinutes(); var s2=d2.getSeconds(); //如果小时、分钟或秒是一位数字,请在其前面加一个零// if(h2<10){ h2=“0”+h2; } 如果(m2<10){ m2=“0”+m2; } 如果(s2<10){ s2=“0”+s2; } var时间=h2+“:”+m2+“:”+s2; //……计算差额// 如果(h1==h2){ var diff=m2-m1; 如果((差=10)){ document.getElementById(“diff”).innerHTML=diff; move(); } } 然而,我意识到这并不总是有效的,就像上面的例子一样。当小时值不相同时,脚本不会计算时间差。有没有办法克服这个问题

正如这里所回答的


要计算差异,您可以将“计算差异”注释下方的内容替换为:

//........Calculating the difference........//
if(Math.abs(d1.getTime() - d2.getTime()) <= 600000) {
    // execute your function
}
<代码>//…计算差异// 如果(Math.abs(d1.getTime()-d2.getTime())尝试使用
parseInt()
函数,因为将0追加到h1、h2、m1和m2后,它将被视为字符串

if (parseInt(h1) == parseInt(h2)) {
    var diff = parseInt(m2) - parseInt(m1);
        if ((diff == 10)) {
            document.getElementById("diff").innerHTML = diff;
            move();
    }
}

你应该先计算时间差,然后再进行逻辑运算。这样,无论测试结果如何,你都可以显示时间差。要计算时间差,请将时间差转换为秒或分钟之类的常用基数,然后按照适合的格式进行表示,例如

函数getTimeDiff(h1、m1、s1、h2、m2、s2){ 返回差=秒(h2,m2,s2)-秒(h1,m1,s1); } 功能到秒(h、m、s){ 返回h*3600+m*60+s*1; } 第二个功能STOHMS(秒){ 函数z(n){return(n600?'more':'less'}小于10分钟`);
});为什么不将这两组值转换为一个共同的分母(比如秒)并获得差异?如果超过600秒,则超过10分钟。您可以将两者转换为历元秒,然后取一个差值。它更简单,代码更少可能重复,但这会给出两个日期之间的差异,而我的代码会查看两个时间之间的差异,具体以分钟为单位。dates-time是一个对象,您可以在date对象中添加时间字段。如果不添加任何时间字段,则时间为00:00:00,因此在本例中,date1被视为
07/13/2010 00:00:00
,当差值小于10分钟且小时数不相同时,这并不能解决问题。试试这个例子:d1=2018/08/16 11:00:01和d2=2018/08/16 10:58:00这非常有效,谢谢!我对函数进行了处理,并设法获得了所需格式的脚本。现在,我想知道如何在for循环中将上述函数应用于时间数组。
if (parseInt(h1) == parseInt(h2)) {
    var diff = parseInt(m2) - parseInt(m1);
        if ((diff == 10)) {
            document.getElementById("diff").innerHTML = diff;
            move();
    }
}