回调函数和一列的小时和分钟

Callback function sum a hours and minutes of a column

本文关键字:一列 小时 分钟 函数 回调      更新时间:2023-09-26

我正在尝试计算数据表一列的总小时数和总分钟数。

我有这个时间格式在DT单元格:4h 12m

然后像这样:

4 h 12米2 h 8米4 h 0 m

总数必须为:

10 h 20米

我试着这样写:

'footerCallback': function ( row, data, start, end, display ) {
                                var api = this.api(), data;
                                //Remove the formatting to get integer data for summation
                                var numVal = function ( i ) {
                                    return typeof i === 'string' ?
                                            parseFloat(i.split("€")[1].split("<")[0].replace(/,/, '.')) :
                                            typeof i === 'number' ?
                                                    i : 0;
                                };
                                var perTemp = function ( i ) {
                                    // I need some help here...
                                }
                                // Total over all pages
                                totalvar = api
                                        .column( 3 )
                                        .data()
                                        .reduce( function (a, b) {
                                            return numVal(a) + numVal(b);
                                        }, 0 );
                                totaltemp= api
                                        .column( 4 )
                                        .data()
                                        .reduce( function (a, b) {
                                            return perTemp(a) + perTemp(b);
                                        }, 0 );
                                // Update footer
                                $( api.column( 3 ).footer() ).html('€ ' + totalvar);
                                $( api.column( 4 ).footer() ).html(totaltemp[0] + "h" + totaltemp[1] + "m");

我需要一些帮助与"perTemp"功能。

var a = ["4h 12m 2h 8m 4h 0m", "4h 12m"];
var s = a.join(","); // "4h 12m 2h 8m 4h 0m,4h 12m"
var re = /(['d]*?(h|m))/gmi;
var res = s.match(re); // Array [ "4h", "12m", "2h", "8m", "4h", "0m", "4h", "12m" ]
var hours = res.filter(function(value){
   if(value.indexOf("h") > -1){
     return true;
   }
}).map(function(value){
   return parseInt(value.substr(0, value.length-1))
}).reduce(function(pre, cur){
  return pre + cur
}); // Array [ "4h", "2h", "4h", "4h" ] -> Array [ 4, 2, 4, 4 ] -> 14
 var min = res.filter(function(value){
   if(value.indexOf("m") > -1){
     return true;
   }
}).map(function(value){
   return parseInt(value.substr(0, value.length-1))
}).reduce(function(pre, cur){
  return pre + cur
}); // 32
// add hour if > 60 min
hour += Math.floor(min/60);
min = min % 60;