javascript - AngularJS 两个日期之间的区别

标签 javascript angularjs date spring-boot

我有一个应用程序(该应用程序是使用 springboot 构建的 API 和 AngularJs 构建的 View 。)获取事件开始和结束时间的报告,开始日期(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。手动计算

Calculate difference between 2 timestamps using javascript 之前回答过

<强>2。使用 Moment.js

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

关于javascript - AngularJS 两个日期之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274571/

相关文章:

javascript - 更改类与选择字段选项的属性匹配的文本值范围

javascript - 自动http过期

javascript - Material 设计中的输入没有主题

javascript - 使用 jquery 检查元素

javascript - 任何人都可以看到这个 javascript 代码中的错误吗?填充二维数组

javascript - 访问元素值

javascript - Angular为什么不忽略随后的$ digest调用?

可以处理重复的不规则时间序列的滚动窗口函数

javascript - 根据子元素值对列表项进行排序

javascript - AmCharts v4 折线图,日期轴晚 1 个月开始