计算列的时间总和

我有这张桌子:

Total duration time
Anna 31800:00:50 62700
Bob 318 00:00:27 62703
Mike 318 00:00:36 88455233284

我需要计算具有类duration_time的列的总和,并将结果打印到具有类total_duration_time列。

如何在JavaScript或jQuery上执行此操作?

我尝试使用此示例http://jsfiddle.net/unKDk/13/中的代码,但如果不使用数字替换00:00:00类型的值,则不会计算时间量。

最简单的方法是使用秒。 我的意思是,您可以将每个持续时间转换为秒,制作总数,然后使用将秒转换为hh-mm-ss格式的其他函数显示您需要的位置。

您可以查看它的外观和工作原理

注意:函数toHHMMSS()是令牌表单

这是一个带进位的完整示例(假设格式为HOURS:MINUTES:SECONDS),可能不是计算的最佳解决方案:

HTML

 
Apple Orange Watermelon
00:55:23 00:55:23 00:55:23
00:55:23 00:55:23 00:55:23
00:55:23 00:55:23 00:55:22
Total: Total: Total:

JS

 var totals = [[0,0,0], [0,0,0], [0,0,0]]; $(document).ready(function () { var $dataRows = $("#sum_table tr:not('.totalColumn, .titlerow')"); $dataRows.each(function () { $(this).find('.rowDataSd').each(function (i) { time = $(this).html().split(":") totals[i][2] += parseInt(time[2]); if(totals[i][2] > 60) { totals[i][2] %= 60; totals[i][1] += parseInt(time[1]) + 1; } else totals[i][1] += parseInt(time[1]); if(totals[i][1] > 60) { totals[i][1] %= 60; totals[i][0] += parseInt(time[0]) + 1; } else totals[i][0] += parseInt(time[0]); }); }); $("#sum_table td.totalCol").each(function (i) { console.log(totals[i]); $(this).html("total:" + totals[i][0] + ":" + totals[i][1] + ":" + totals[i][2]); }); }); 

http://jsfiddle.net/unKDk/192/

您可以使用24小时格式时间输入计算总时间

 var a = "22:00" var b = "01:00" 

小提琴演示:

时间计算示例,https://github.com/Zalasanjay

你需要做这样的事情,我没有广泛测试过,所以可能有问题,但你应该明白这个想法。

使用Javascript

 var totalDurationTime = document.getElementsByClassName("total_duration_time")[0], durationTimes = document.getElementsByClassName("duration_time"), total = { hours: 0, minutes: 0, seconds: 0 }; function zeroPad (num) { var str = num.toString(); if (str.length < 2) { str = "0" + str; } return str; } Array.prototype.forEach.call(durationTimes, function (time) { var parts = time.textContent.split(":"), temp; temp = (+parts[2] + total.seconds); total.seconds = temp % 60; temp = (+parts[1] + total.minutes) + (temp - total.seconds) / 60; total.minutes = temp % 60; total.hours = (+parts[0] + total.hours) + (temp - total.minutes) / 60; }); totalDurationTime.textContent = zeroPad(total.hours) + ":" + zeroPad(total.minutes) + ":" + zeroPad(total.seconds); 

在jsfiddle