使用javascript的时间总和

如何在javascript中加总时间

01:00:00 00:30:00 00:30:00 

我有时间喜欢上面我想要给定时间的总和

 sum of above time= 02:00:00 

如果我使用javascript方法setHours(),setMinutes()这些函数替换旧时间并显示新添加的时间,如:

 1. new Date( new Date(0, 0, 0, 00, 00, 00, 0)).setMinutes(30) 2. new Date(new Date( new Date(0, 0, 0, 00, 00, 00, 0)).setMinutes(30)).setMinutes(30); 

以上两个条件结果相同,但我想在这里00:30 + 00:30 = 01:00

。 请提前帮助谢谢

试试这个 :

  var time1 = "01:00:00"; var time2 = "00:30:00"; var time3 = "00:30:00"; var hour=0; var minute=0; var second=0; var splitTime1= time1.split(':'); var splitTime2= time2.split(':'); var splitTime3= time3.split(':'); hour = parseInt(splitTime1[0])+parseInt(splitTime2[0])+parseInt(splitTime3[0]); minute = parseInt(splitTime1[1])+parseInt(splitTime2[1])+parseInt(splitTime3[1]); hour = hour + minute/60; minute = minute%60; second = parseInt(splitTime1[2])+parseInt(splitTime2[2])+parseInt(splitTime3[2]); minute = minute + second/60; second = second%60; alert('sum of above time= '+hour+':'+minute+':'+second); 

一些函数可以帮助您在格式化的时间长度和秒之间来回切换整数:

 function timestrToSec(timestr) { var parts = timestr.split(":"); return (parts[0] * 3600) + (parts[1] * 60) + (+parts[2]); } function pad(num) { if(num < 10) { return "0" + num; } else { return "" + num; } } function formatTime(seconds) { return [pad(Math.floor(seconds/3600)%60), pad(Math.floor(seconds/60)%60), pad(seconds%60), ].join(":"); } 

您可以使用它们来实现您想要的效果:

 time1 = "02:32:12"; time2 = "12:42:12"; formatTime(timestrToSec(time1) + timestrToSec(time2)); // => "15:14:24" 

如果你想使用Date对象,你可以,你必须确保在添加它时包含你正在改变的单位的当前值,如下所示:

 var dt = new Date(0, 0, 0, 0, 0, 0, 0); dt.setHours(dt.getHours() + 1); // For the 01:00 dt.setMinutes(dt.getMinutes() + 30); // For the first 00:30 dt.setMinutes(dt.getMinutes() + 30); // For the second 00:30 display("Hours: " + dt.getHours()); display("Minutes: " + dt.getMinutes()); function display(msg) { var p = document.createElement("p"); p.innerHTML = String(msg); document.body.appendChild(p); } 

这个解决方案很完美:

 function timestrToSec(timestr) { var parts = timestr.split(":"); return (parts[0] * 3600) + (parts[1] * 60) + (+parts[2]); } function pad(num) { if(num < 10) { return "0" + num; } else { return "" + num; } } function formatTime(seconds) { return [pad(Math.floor(seconds/3600)%60), pad(Math.floor(seconds/60)%60), pad(seconds%60), ].join(":"); } 

但是最后一个函数“formatTime”中有一个小错误!

 return [pad(Math.floor(seconds/3600)%60), => return [pad(Math.floor(seconds/3600)), 

所以没有%60 !! 如果我必须总和小时,它可以大于60(H)

这项工作对我来说:

  function padnum(n){return n<10 ? '0'+n : n} var time1 = "00:30"; var time2 = "00:60"; var minute=0; var second=0; var splitTime1= time1.split(':'); var splitTime2= time2.split(':'); minute = parseInt(parseInt(splitTime1[0]))+parseInt(splitTime2[0]); second = parseInt(parseInt(splitTime1[1]))+parseInt(splitTime2[1]); minute = minute + second/60; minute =parseInt(minute); second = second%60; minute = padnum(minute); second = padnum(second); alert('sum of above time= '+minute+':'+second);