¿Cómo puedo sumar horas: minutos: segundos en JavaScript? Me refiero a 04:32:05 03:14:03 para obtener 07:46:08
He intentado
var time1 = "01:00:01"; var time2 = "01:00:10"; var time3 = "01:54:00"; var time4 = "01:30:00"; var time5 = "01:00:00"; var time6 = "01:00:00"; var time7 = "01:00:00"; var hour=0; var minute=0; var second=0; var splitTime1= time1.split(':'); var splitTime2= time2.split(':'); var splitTime3= time3.split(':'); var splitTime4= time4.split(':'); var splitTime5= time5.split(':'); var splitTime6= time6.split(':'); var splitTime7= time7.split(':'); hour = parseInt(splitTime1[0]) + parseInt(splitTime2[0]) + parseInt(splitTime3[0]) + parseInt(splitTime4[0]) + parseInt(splitTime5[0]) + parseInt(splitTime6[0]) + parseInt(splitTime7[0]) minute = parseInt(splitTime1[1]) + parseInt(splitTime2[1]) + parseInt(splitTime3[1]) + parseInt(splitTime4[1]) + parseInt(splitTime5[1]) + parseInt(splitTime6[1]) + parseInt(splitTime7[1]) hour = hour + minute/60; minute = minute%60; second = parseInt(splitTime1[2]) + parseInt(splitTime2[2]) + parseInt(splitTime3[2]) + parseInt(splitTime4[2]) + parseInt(splitTime5[2]) + parseInt(splitTime6[2]) + parseInt(splitTime7[2]) minute = minute + second/60; second = second%60; console.log(hour+ ":" + minute + ":"+ second)El resultado que obtengo es 8.4:24.183333333333334:11 en lugar de 08:24:11 ¿alguna sugerencia?
lo está haciendo muy complejo, puede reducir esto convirtiéndolo en objetos de fecha y luego agregar cada fecha para obtener la suma de todas las fechas Comprender la fecha y la hora en JavaScript
El problema con tu código es que estás incluyendo el punto decimal
hour = hour + minute/60;necesitas piso.
hour = hour + Math.floor(minute/60);Ahora cómo hacerlo sin mucho código repetitivo.
function toSeconds(s) { const parts = s.split(':'); return +parts[0] * 3600 + +parts[1] * 60 + +parts[2]; } function secondsToHHMMSS(secs) { return Math.floor(secs / 3600).toString().padStart(2, '0') + ':' + (Math.floor(secs / 60) % 60).toString().padStart(2, '0') + ':' + (secs % 60).toString().padStart(2, '0'); } const timestamps = ["01:00:01", "01:00:10", "01:54:00", "01:30:00", "01:00:00", "01:00:00", "01:00:00"]; const totalSeconds = timestamps.reduce(function(total, ts) { return total + toSeconds(ts); }, 0); const result = secondsToHHMMSS(totalSeconds); console.log(result);Si quieres una suma de veces, entonces deberías probar esto
var addTime = function (time1, time2) { // convert to ms var dateObject1 = new Date(time1).valueOf(); var dateObject2 = new Date(time2).valueOf(); return dateObject1 + dateObject2; } var time1 = new Date().setHours(4, 32, 5, 0); var time2 = new Date().setHours(3, 14, 3, 0); var sum = new Date(addTime(time1, time2)); var getFormatedTime = function (time) { return time.getHours()+':'+time.getMinutes()+':'+time.getSeconds() } console.log(getFormatedTime(sum))