代码之家  ›  专栏  ›  技术社区  ›  code.cycling

Angularjs使用momentjs获取总小时数

  •  0
  • code.cycling  · 技术社区  · 8 年前

    这是我的密码

    总小时值

    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;
    
        });
      });
    }
    

    输出错误:

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   Vivek Athalye    8 年前

    您获得该输出的原因有两个:

    1. tth 片刻 期间 .

    以下是获得输出的两种方法(检查console中的最后几行以了解两种输出之间的差异):

    注意:由于您的问题与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>