как узнать количество дней от angularjs - PullRequest
1 голос
/ 17 апреля 2019

как получить количество дней между двумя датами, но оно не работает, я думаю, что мой формат даты не правильный, но как изменить формат даты и получить количество дней

$scope.ChangeDate = function () {      
    var oneDay = 24 * 60 * 60 * 1000;
    var firstDate = $scope.Current.PlainnedStart;
    var secondDate = $scope.Current.PlainnedEnd;
    if (!angular.isUndefined(firstDate) && !angular.isUndefined(secondDate)) {
        var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime()) / (oneDay)));
        alert(diffDays);
        $scope.Current.NOD = ++diffDays;          
    }
}

введите описание изображения здесь


<input type="text" onchange="angular.element(this).scope().ChangeDate()"
       id="date" ng-model="Current.PlainnedStart"
       class="floating-label mdl-textfield__input" placeholder=""> 

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

вы можете использовать

<input class="form-control" ng-model="day1" ng-blur="getDate(day1)" type="text" readonly />


$scope.getDate= function (date) {
var dates = new Date();
console.log(dates);
}

Вы можете легко справиться с моментами с указанием даты

var a = moment('2018-04-17T07:00:00.000Z');
var b = moment('2018-04-27T07:00:00.000Z'); 
var days = b.diff(a, 'days');

http://momentjs.com/

или с Javascript

var a = new Date("2018-04-17T07:00:00.000Z"); 
var b = new Date("2018-04-27T07:00:00.000Z");
var dayDif = (a - b)  / 1000 / 60 / 60 / 24;
0 голосов
/ 17 апреля 2019

Как упоминалось в предыдущем ответе выше, вы можете разделить строку, чтобы получить значения. Или измените его, как показано ниже

Пример: предположим, моя строка даты

var str1 = '17-Apr-2019';
var str2 = '20-Apr-2019';

var diff = Math.abs(new Date(str2).getDate() - new Date(str1).getDate()); 
console.log(diff)

Output => 3

или , если вы не хотите никаких изменений кода . Измените формат указателя даты на (мм-дд-гггг), вы получите такой же вывод

0 голосов
/ 17 апреля 2019

Вы должны преобразовать обе даты в объект JavaScript Date . Из того, что я вижу, входные данные обоих входов даты представлены в формате 'dd-mm-yyyy', и это вызовет некоторые проблемы, если вы попытаетесь напрямую преобразовать его в объект Date. Вместо этого вам следует преобразовать его в «гггг-мм-дд» перед преобразованием в объект даты.

Затем вы можете рассчитать разницу между обеими датами.

const str1 = '17-04-2019';
const str2 = '20-04-2019';

const toDate = dateStr => {
  const parts = dateStr.split('-');
  return new Date(parts[2], parts[1] - 1, parts[0]);
}

const diff =  Math.floor((toDate(str2) - toDate(str1) ) / 86400000); 

console.log(diff)
...