如何获得日期小时+分钟的总和

时间:2015-02-05 15:10:03

标签: javascript angularjs date time date-arithmetic

     <tr data-ng-repeat="timesheet in timesheets">
                    <td>{{timesheet.startDate  | date:'dd/MM'}}</td>
                    <td>{{timesheet.startTime  | date:'HH:mm'}}</td>
                    <td>{{timesheet.endTime  | date:'HH:mm'}}</td>
                    <td>{{timesheet.breakTime  | date:'HH:mm'}}</td>
                    <td>{{timesheet.totalTime | date:'HH:mm'}}</td>
                    <td >{{timesheet.note}}</td>

                </tr>

我希望使用所有timesheet.totalTime,timesheet.totalTime的总和创建一个新变量,所以我可以使用getHours和getMinutes

所以我的问题是如何创建一个新的int / number var,得到总时间的总和 例如..

   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 09:30
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 10.45
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 01:15
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 10.00
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 10.00

<td>{{timesheet.totalTimeSum}}</td> //= 41.30  ??

我如何在控制器端进行此操作

1 个答案:

答案 0 :(得分:0)

您可以创建一个使用reduce汇总timesheets的控制器方法:

$scope.timesheets = [
    {
        totalTime: 1
    },
    {
        totalTime: 3
    },
    {
        totalTime: 2
    },
    {
        totalTime: 10
    }    
];

$scope.totalTimeSum = function () {
    return $scope.timesheets.reduce(function (memo, timesheet) {
        // assuming you've DI'd $filter
        var time = $filter('date')(timesheet.totalTime, 'HH:mm');
        return memo + (+time);
    }, 0); 
}; // 16

根据您支持的浏览器,您可能需要填充Array#reduce或使用lodash / underscore。

Fiddle