我有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>

08-18 01:27