在 JavaScript 中获取两个时间之间的时差

Get Time Difference Between two times in Javascript

本文关键字:时间 两个 之间 时差 JavaScript 获取      更新时间:2023-09-26

我需要计算字符串中给出的时间之间的时差。我在字符串中有时间,见下文

    var time1 = "07:50";
    var time2 = "08:30";
    var time3 = "24:00";
    for calculating time difference.I tried like this code snippets
    var date1 = new Date(2015, 01,07,  time1.split(":")[0],time1.split(":")[1]);
    var date2 = new Date(2015, 01, 07, time2.split(":")[0], time2.split(":")[1]);
    var date3 = new Date(2015, 01, 07, time3.split(":")[0], time3.split(":")[1]);
    if (date2 > date1) {
        var diff = date2 - date1;
    }

虽然我有第三次需要时间3并添加如下条件

    if (date2 > date1) {
        var diff = date2 - date1;
    }else{
        var diff = date3-date2+date1;
    }        

现在差异未正确显示。我怎样才能得到确切的小时和分钟差异。任何其他简单的方法都在那里。让我帮忙

您不需要创建日期,只需将字符串转换为分钟即可。基于您的原始代码:

var t1 = time1.split(":")[0]*60 + time1.split(":")[1]*1;
var t2 = time2.split(":")[0]*60 + time2.split(":")[1]*1;
var t3 = time3.split(":")[0]*60 + time3.split(":")[1]*1;

现在差异将是您可以转换为 hh:mm 的分钟数:

var diff;
if (t2 > t1) {
    diff = t2 - t1;
}else{
    diff = t3 - t2 + t1;
}
function pad(n) {return (n<10? '0':'') + n}
var s = pad(diff/60 | 0) + ':' + pad(diff%60);
console.log(s); // 00:40

你期待什么结果?

您还可以使用一些常规功能:

// Convert H:M:S to seconds
// Seconds are optional (i.e. n:n is treated as h:s)
function hmsToSeconds(s) {
  var b = s.split(':');
  return b[0]*3600 + b[1]*60 + (+b[2] || 0);
}
// Convert seconds to hh:mm:ss
function secondsToHMS(secs) {
  function z(n){return (n<10?'0':'') + n;}
  var sign = secs < 0? '-':'';
  secs = Math.abs(secs);
  return sign + z(secs/3600 |0) + ':' + z((secs%3600) / 60 |0) + ':' + z(secs%60);
}
var t1 = hmsToSeconds(time1);
var t2 = hmsToSeconds(time2);
var t3 = hmsToSeconds(time3);
var diff;
if (t2 > t1) {
    diff = secondsToHMS(t2 - t1);
}else{
    diff = secondsToHMS(t3 - t2 + t1);
}
console.log(diff); // 00:40:00