我有一个应用程序(该应用程序是使用 springboot 作为 API 和 AngularJs 作为 View 构建的。)它会获取事件开始和完成时间的报告,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. 手动计算
在 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 - 2个日期之间的AngularJS差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34274571/