Angularjs使用momentjs获得总小时数

时间:2017-09-21 02:50:04

标签: javascript angularjs

我有10个时间记录。我想用momentjs获得总小时数

这是我的代码

总时间价值

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

MY CONTROLLER

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;

    });
  });
}

输出错误:

enter image description here

1 个答案:

答案 0 :(得分:2)

您获得该输出有几个原因:

  1. 您正在将tth转换为时刻。您应该将其转换为持续时间
  2. 您的总小时数超过24小时,因此他们正在进行模拟(小时数%24)。在这种情况下,您可能希望显示天数和小时数。
  3. 以下是获取输出的两种方法(检查控制台中的最后几行以了解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>