2014-09-08 4 views
8

Использование угловой даты $filter Фактически я могу получить текущий day, year and month.Angularjs следующий и предыдущий день, год, месяц

Но, как я могу получить следующий и предыдущий day, year, month?

Это код, который я написал, но я не знаю, с чего начать

$scope.month = $filter('date')(date, 'MMMM');//December-November like 
$scope.day = $filter('date')(date, 'dd'); //01-31 like 
$scope.year = $filter('date')(date,'yyyy');//2014 like 

$scope.nextYear = Number($scope.year) + 1; 
$scope.prevYear = Number($scope.year) - 1; 
$scope.nextDay = ? 
etc... 

Есть ли у вас какие-либо идеи?

+1

вы можете использовать 'http: // www.datejs.com /' plugin :) или 'http: // momentjs.com/docs /' :) –

+0

+1 для использования момента.js, вы сэкономите свое время , упростите свой код и трюки правильно! – benek

+0

@benek nah я создаю директиву, и он должен работать без помощи;) – sbaaaang

ответ

12

Вы можете сделать это вот так: угловая дата $ filter не предлагает вам более простой способ сделать это, просто форматирует дату в специальном формате.

день:

var myDate = new Date(); 

var previousDay = new Date(myDate); 

previousDay.setDate(myDate.getDate()-1); 

var nextDay = new Date(myDate); 

nextDay.setDate(myDate.getDate()+1); 

Месяц:

var previousMonth = new Date(myDate); 

previousMonth.setMonth(myDate.getMonth()-1); 

var nextMonth = new Date(myDate); 

nextMonth.setMonth(myDate.getMonth()+1); 

Год:

var previousYear = new Date(myDate); 

previousYear.setYear(myDate.getFullYear()-1); 

var nextYear = new Date(myDate); 

nextYear.setYear(myDate.getFullYear()+1); 

$scope.month = $filter('date')(myDate, 'MMMM');//December-November like 
$scope.day = $filter('date')(myDate, 'dd'); //01-31 like 
$scope.year = $filter('date')(myDate,'yyyy');//2014 like 

$scope.nextDay = $filter('date')(nexyDay, 'dd'); 
$scope.prevDay = $filter('date')(previousDay, 'dd'); 
$scope.nextMonth = $filter('date')(nextMonth, 'MMMM') 
$scope.prevMonth = $filter('date')(previousMonth, 'MMMM') 
$scope.nextYear = $filter('date')(nextYear,'yyyy'); 
$scope.prevYear = $filter('date')(previousYear,'yyyy'); 

Если вы собираетесь делать это много, я предлагаю вам создать службу для реализации этого логика.

+0

@Wavy вы даже знаете, как увеличить месяц, например $ scope.month = $ scope.month + 1? я попробовал что-то вроде ** $ scope.month = $ filter ('date') (новая дата ($ scope.month) .getMonth() + 1, 'MMMM'); ** – sbaaaang

+0

В моем ответе вы узнаете, как: s 'var nextMonth = new Дата (дата); $ scope.nextMonth = $ filter ('date') (nextMonth.setDate (date.getMonth() + 1), 'MMMM') ' – Wawy

+1

Мне удалось выполнить эту работу после изменения метода getYear()' 'getFullYear()'. 'getYear()' возвращает количество лет с 1900 года и устарело. http://stackoverflow.com/a/4754956/3341707 – mistykristie