2016-02-04 5 views
-1

Я хочу рассчитать разницу между двумя датами с угловыми js. Я использовал этот код:рассчитать разницу между двумя датами с угловыми js

$scope.formatString = function(format) { 
    var year = parseInt(format.substring(0,5)); 
    var month = parseInt(format.substring(6,8)); 
    var day = parseInt(format.substring(9,10)); 
    var date = new Date(year, month-1, day); 
    return date; 
} 

$scope.dayDiff = function(fromdate,todate){ 
    var date2 = new Date($scope.formatString(fromdate)); 
    var date1 = new Date($scope.formatString(todate)); 
    var timeDiff = Math.abs(date2.getTime() - date1.getTime()); 
    var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
    return diffDays; 
} 

Но это право на в том же месяце, но он не может сделать правильный расчет между двумя датами в разные месяцы.

  • Например date1 = 2016.2.12, дата2 = 2016.2.18 (Хорошо)
  • Например date1 = 2016.2.12, дата2 = 2016.3.1 (Это не верно)
+0

см DATEDIFF фильтр, приведенные в - http://stackoverflow.com/questions/25635082/calculating-date-difference-with-angular-filter Надеюсь, что это помогает! –

ответ

0

Почему бы не попытаться использовать функцию String split (docs), чтобы проанализировать вашу дату, split будет производить массив года, месяца и дня в этом порядке в зависимости от формата, который вы вводите. Оттуда вы можете ссылаться на части массива по индексу, немного легче, чем пытаться получить ваши смещения подстроку выстроились правильно:

$scope.formatString = function(format) { 
    var pieces = format.split('.'), 
     year = parseInt(pieces[0]), 
     month = parseInt(pieces[1]), 
     day = parseInt(pieces[2]), 
     date = new Date(year, month - 1, day); 

    return date; 
} 

Посмотрите на это рабочий пример: http://plnkr.co/edit/GgXjqA76IX5bzQEP56ux?p=preview

+0

Благодарим вас за полезность. Это нормально для меня. –

0

Это лучше использовать готовая библиотека. Потому что вы не знаете, что в будущем вам все равно придется работать с датами. Я рекомендую sugarjs.

Разница между датами может быть найдена следующим образом.

Date.range('2012.01.01', '2013.01.01').every('days').length 
Смежные вопросы