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

时间:2018-08-16 09:11:43

标签: 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 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();
    }
}

但是,我已经意识到这并不总是可行的,就像上面的示例时间一样。如果小时值不同,则脚本不会计算时差。有办法克服吗?

4 个答案:

答案 0 :(得分:1)

您应该先计算时差,然后再进行逻辑运算。这样,无论测试结果如何,您始终可以显示差异。要做到这一点,请将其转换为一些常见的底数,例如秒或分钟,然后设置适合演示的格式,例如

function getTimeDiff(h1, m1, s1, h2, m2, s2) {
  return diff =  toSeconds(h2, m2, s2) - toSeconds(h1, m1, s1);  
}

function toSeconds(h, m, s) {
  return h*3600 + m*60 + s*1;
}

function secondsToHMS(secs) {
  function z(n){return (n<10? '0':'') + n}
  return z(secs/3600|0) + ':' +
         z((secs%3600)/60|0) + ':' +
         secs%60;
}

// Tests
[[4,23,15, 5,5,8],    // 04:23:15 vs 05:05:08
 [4,23,15, 4,25,8]].  // 04:23:15 vs 04:25:08
  forEach(function(arr) {
    var diff = getTimeDiff(...arr);
    console.log(`Diff of ${secondsToHMS(diff)} is ${diff > 600? 'more':'less'} than 10 minutes`);
 });

答案 1 :(得分:0)

如此处的回答Get difference between 2 dates in JavaScript?

var date1 = new Date("7/13/2010");
var date2 = new Date("12/15/2010");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);`

答案 2 :(得分:0)

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

>>> for l in range(2, 12):
...     print(f'{l:>2d}:', ''.join(chain.from_iterable(zip_longest(*[a[i::l] for i in range(8)], fillvalue=''))))
...
 2: hello wollo worlo worldworldrldd
 3: hello wolo worldworldld
 4: hello woo worldrld
 5: hello wo worldd
 6: hello woworld
 7: hello woorld
 8: hello world
 9: hello wold
10: hello wod
11: hello wo

说明

    lloopmois.map((result, index) => ...) // ^ ^ 对象的
  • getTime()函数返回日期时间戳记,即1970年1月1日00:00:00 UTC与您的日期之间经过的毫秒数 宾语。使用日期进行计算时,使用此方法要容易得多,而不是分别比较/计算小时,分钟和秒……这在软件开发中也是很常见的做法。
  • 使用此功能,我们以毫秒为单位计算差异。我使用Math.abs()是为了确保此差异始终为正数。这使得以下比较容易。
  • 然后,我们只需要检查此差异是否小于或等于10分钟,即10 * 60 * 1000 = 600000毫秒。

我们去了!现在,您具有调用函数所需的条件。

如果需要更多说明,请随时答复。

答案 3 :(得分:0)

尝试使用parseInt()函数,因为在将h1,h2,m1和m2附加0后将其视为字符串。

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