Adding HH:MM:SS strings in Javascript

2019-09-12 11:49发布

I don't think I can figure this out on my own. Lets say I have a time in the string format of HH:MM:SS ex. 10:11:06 and I would like to add another time to it and return it as a string. ex. "10:11:06" + "11:00:01" would return "21:11:07"

I have gone through this site coming up with a solution of converting it to seconds and then adding them together as such:

function addTimes(start, end) {
 var a = start.split(":");
 var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
 var b = end.split(":");
 var seconds2 = (+b[0]) * 60 * 60 + (+b[1]) * 60 + (+b[2]); 

 var date = new Date(1970,0,1);
     date.setSeconds(seconds + seconds2);

 var c = date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
     return c;
     console.log(c);
}   

Yet console.log C returns an Invalid Date. Is this still a string or am I doing something wrong?

Source 1 Source 2

EDIT: (I was stupid) I had this in a recursive loop and I initialized the sum variable with a var s = 0; instead of a var s = "00:00:00";

2条回答
唯我独甜
2楼-- · 2019-09-12 12:28

try

var c = date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
return c;

to convert date object to time.

查看更多
三岁会撩人
3楼-- · 2019-09-12 12:42

Try this

var start = "10:11:06";
var end = "10:11:06";
  var a = start.split(":");
 var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
 var b = end.split(":");
 var seconds2 = (+b[0]) * 60 * 60 + (+b[1]) * 60 + (+b[2]); 

 var date = new Date(1970,0,1);
     date.setSeconds(seconds + seconds2);

 var c = date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
console.log(c);

查看更多
登录 后发表回答