如何在JavaScript中减去两个时间字符串(HH:MM)?

时间:2019-07-19 10:58:34

标签: javascript time

我有两个时间字符串,例如03:01和01:19。我要减去这两个, 我尝试如下,

var time1= "03:01".split(':');
var time2= "01:19".split(':');
var minutes = Math.abs(Number(time1[1])-Number(time2[1]));
var hours = Math.floor(parseInt(minutes / 60));
hours = Math.abs(Number(time1[0])-Number(time2[0])-hours);
minutes = minutes % 60;
if(hours.toString().length == 1){
  hours = '0'+hours;
}
if(minutes.toString().length == 1){
  minutes = '0'+minutes;
}
console.log(hours+':'+minutes);

  

预期答案-> 01:42

     

实际答案-> 02:18

有人可以告诉我,我在哪里做错了?

1 个答案:

答案 0 :(得分:0)

使用如下所示的几个实用程序功能可能会有所帮助。

基本上strToMins将字符串转换为分钟。 和minsToStr转换回字符串。

以下示例。

var time1= "03:01";
var time2= "01:19";

function strToMins(t) {
  var s = t.split(":");
  return Number(s[0]) * 60 + Number(s[1]);
}

function minsToStr(t) {
  return Math.trunc(t / 60)+':'+('00' + t % 60).slice(-2);
}

var result = minsToStr( strToMins(time1) - strToMins(time2) );
console.log(result);