我有10条时间记录。我想使用moment.js获取总时间
这是我的代码
总小时值
00:47:21
00:00:25
00:00:08
00:00:03
00:00:37
16:12:12
04:44:22
01:39:03
00:01:58
16:17:29
我的控制器
vm.tth = 0;
function getFirst() {
dataservice.getUserProfile(vm.userId).then(function (data) {
vm.userlistData2 = data;
imageservice.getCurrentImage(vm.userlistData2.user_id).then(function (data) {
vm.photo = data;
});
dataservice.getUserAttendance(vm.userlistData2.user_id).then(function (data) {
vm.attendance = data;
for( var x=0; x < vm.attendance.length; x++){
vm.tth += moment.duration(vm.attendance[x].totalHrs);
console.log(moment(vm.tth).format('HH:mm:ss'));
}
return vm.attendance;
});
});
}
输出错误:
最佳答案
获得该输出的原因有两个:
您正在将tth
转换为时刻。您应该将其转换为持续时间。
您的总小时数已超过24,因此已修改(小时数%24)。在这种情况下,您可能需要显示天数和小时数。
这是获取输出的两种方法(检查控制台中的最后几行以了解2个输出之间的区别):
注意:由于您的问题与angularjs无关,所以我展示的是普通的JS代码。
var attendance = [
'00:47:21',
'00:00:25',
'00:00:08',
'00:00:03',
'00:00:37',
'16:12:12',
'04:44:22',
'01:39:03',
'00:01:58',
'16:17:29'
];
var tth = 0;
for( var x=0; x < attendance.length; x++){
tth += moment.duration(attendance[x]);
var d = moment.duration(tth);
console.log(moment(tth).format('HH:mm:ss') + ' with number of days >> ' + d.days() + ' ' + d.hours() + ':' + d.minutes() + ':' + d.seconds() );
console.log(moment(tth).format('HH:mm:ss') + ' with hours exceeding 24 ## ' + parseInt(d.asHours()) + ':' + d.minutes() + ':' + d.seconds() );
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>