2015-12-14 102 views
3

我有一个应用程序(该应用程序是使用API​​和AngularJs的springboot为视图构建的),它获取incidente何时启动和完成的报告,startdate(2015-12-01T08:19 :00.000Z)和结束日期(2015-12-06T02:59:00.000Z)为例。AngularJS 2日期之间的差异

我似乎找不到一个好方法来将两个日期之间的差异设置为新值不可用。

这是我的.js文件:

 .controller(
     'IncidenteController', 
     [ 
       '$scope', 
       '$http', 
       '$routeParams', 
       'urlinc', 
       '$location', 
       function($scope, $http, $routeParams, urlinc, $location) { 

        var url = urlinc.getUrlinc(); 

        var onError = function(reason) { 
         $scope.error = "No se pudo encontrar"; 
        }; 

        var code = $routeParams.codename; 

        console.log(code); 

        var onTecnicoComplete = function(response) { 
         $scope.tecnicos = response.data; 
        }; 

        var onHardwareComplete = function(response) { 
         $scope.hardwares = response.data; 
        }; 

        var onSoftwareComplete = function(response) { 
         $scope.softwares = response.data; 
        }; 

        var onSistemaComplete = function(response) { 
         $scope.sistemas = response.data; 
        }; 

        var onIncidenteComplete = function(response) { 

         try { 
          $scope.incidente = response.data; 
         } catch (error) { 
          console.error(error); 
         } 
        }; 

        $http.get(url + code) 
          .then(onIncidenteComplete, onError); 

        $http.get("http://localhost:8080/tecnico/").then(
          onTecnicoComplete); 

        $http.get("http://localhost:8080/hardware/").then(
          onHardwareComplete); 

        $http.get("http://localhost:8080/software/").then(
          onSoftwareComplete); 

        $http.get("http://localhost:8080/sistema/").then(
          onSistemaComplete); 

        $scope.saveIncidente = function(incidente) { 
         console.log(incidente); 

         return $http.post(url, incidente).success(
           function(data, status, headers, config) { 
            var status2 = '/' + status + '/'; 
            $location.url(status2); 
            return status.data; 
           }).error(function(status) { 
          var status2 = '/' + status.status + '/'; 
          console.log(status2); 
          $location.url(status2); 
          return status.data; 
         }) 
        }; 

        $scope.hardwares = []; 

        $scope.hardwareListener = function() { 
         console.log($scope.hardwares); 
        } 

        $scope.tecnicoListener = function() { 
         console.log($scope.incidente.tecnico); 
        } 

        $scope.date = new Date(); 

        $scope.open = function($event) { 
         $event.preventDefault(); 
         $event.stopPropagation(); 

         $scope.opened = true; 
        }; 

        var that = this; 

        this.dates = { 
         apertura: new Date(), 
         cierre: new Date(), 
        }; 

        this.open = { 
        apertura: false, 
        cierre: false, 
         }; 

        // Disable weekend selection 
        this.disabled = function(date, mode) { 
         return (mode === 'day' && (new Date().toDateString() == date.toDateString())); 
        }; 

        this.dateOptions = { 
         showWeeks: false, 
         startingDay: 1 
        }; 

        this.timeOptions = { 
         readonlyInput: false, 
         showMeridian: false 
        }; 

        this.dateModeOptions = { 
         minMode: 'year', 
         maxMode: 'year' 
        }; 

        this.openCalendar = function(e, date) { 
         that.open[date] = true; 
        }; 

        // watch date1 and date2 to calculate difference 
        this.calculateWatch = $scope.$watch(function() { 
         return that.dates; 
        }, function() { 
         if (that.dates.apertura && that.dates.cierre) { 
         var diff = that.dates.apertura.getTime() - that.dates.cierre.getTime(); 
         that.dayRange = Math.round(Math.abs(diff/(1000*60*60*24))) 
         } else { 
         that.dayRange = 'n/a'; 
         } 
        }, true); 

        $scope.$on('$destroy', function() { 
         that.calculateWatch(); 
        }); 

       } ]) 

编辑:这是我如何设法使其工作:

 $scope.calcularIndisponibilidad = function(incidente){ 

         var cierre = incidente.cierre; 

         var apertura = incidente.apertura; 

         var date1 = Date.parse(cierre); 

         var date2 = Date.parse(apertura); 

         var difference = date1 - date2; 
         console.log(difference); 

         var daysDifference = Math.floor(difference/1000/60/60/24); 
         difference -= daysDifference*1000*60*60*24 

         var hoursDifference = Math.floor(difference/1000/60/60); 
         difference -= hoursDifference*1000*60*60 

         var minutesDifference = Math.floor(difference/1000/60); 
         difference -= minutesDifference*1000*60 

         var indisponibilidad = 'difference = ' + daysDifference + ' day/s ' + hoursDifference + ' hour/s ' + minutesDifference + ' minute/s '; 

         console.log(indisponibilidad); 
+0

的getTime()可能是不必要的。我相信,从另一个日期减去一个日期已经返回了以毫秒为单位的差异。 –

+0

由于某种原因,我似乎无法得到如何做减法“正确的方式” – r007

回答