Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个日期之间的角度差_Javascript_Angularjs_Date_Spring Boot - Fatal编程技术网

Javascript 两个日期之间的角度差

Javascript 两个日期之间的角度差,javascript,angularjs,date,spring-boot,Javascript,Angularjs,Date,Spring Boot,我有一个应用程序(该应用程序是使用springboot为API构建的,AngularJs为视图构建的),它可以获取意外事件开始和结束时的报告,例如startdate(2015-12-01T08:19:00.000Z)和enddate(2015-12-06T02:59:00.000Z) 我似乎没有找到一个好方法将两个日期之间的差异设置为一个新值 这是我的.js文件: .controller( 'IncidenteController', [

我有一个应用程序(该应用程序是使用springboot为API构建的,AngularJs为视图构建的),它可以获取意外事件开始和结束时的报告,例如startdate(2015-12-01T08:19:00.000Z)和enddate(2015-12-06T02:59:00.000Z)

我似乎没有找到一个好方法将两个日期之间的差异设置为一个新值

这是我的.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);

我建议两种方法

1。手动计算

回答之前

2。使用矩.js

moment().format('MMMM Do YYYY, h:mm:ss a'); // December 15th 2015, 11:14:37 am

getTime()可能是不必要的。我相信,从一个日期减去另一个日期已经返回毫秒级的差值。由于某种原因,我似乎不知道如何以“正确的方式”进行减法运算