2014-09-08 21 views
8

Utilizzando la data angolare $filter in realtà posso ottenere l'attuale day, year and month.Angularjs successivo e precedente giorno, anno, mese

Ma, come posso ottenere il successivo e precedente day, year, month?

Questo è il codice che ho scritto, ma non so da dove cominciare con

$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... 

Avete qualche idea?

+1

puoi usare 'http: // www.datejs.com /' plugin :) o 'http: // momentjs.com/docs /' :) –

+0

+1 per usare moment.js, risparmierai il tuo tempo , semplifica il tuo codice e ai trucchi giustamente! – benek

+0

@benek nah sto costruendo una direttiva e deve funzionare senza aiuti;) – sbaaaang

risposta

12

Si potrebbe fare in questo modo, la data angolare $ filter non ti offre un modo più semplice per farlo, semplicemente formatta una data in un formato personalizzato desiderato.

Giorno:

var myDate = new Date(); 

var previousDay = new Date(myDate); 

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

var nextDay = new Date(myDate); 

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

Mese:

var previousMonth = new Date(myDate); 

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

var nextMonth = new Date(myDate); 

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

Anno:

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'); 

Se avete intenzione di fare questo un sacco, ti suggerisco di creare un servizio per implementare questo logica.

+0

@Wavy sai come incrementare il mese ad esempio $ scope.month = $ scope.month + 1? ho provato qualcosa come ** $ scope.month = $ filter ('date') (new Date ($ scope.month) .getMonth() + 1, 'MMMM'); ** – sbaaaang

+0

La mia risposta ti dice come: s 'var nextMonth = new Date (date); $ scope.nextMonth = $ filter ('date') (nextMonth.setDate (date.getMonth() + 1), 'MMMM') ' – Wawy

+1

Sono riuscito a farlo funzionare dopo aver cambiato il metodo' getYear() ' 'getFullYear()'. 'getYear()' restituisce il numero di anni trascorsi dal 1900 ed è deprecato. http://stackoverflow.com/a/4754956/3341707 – mistykristie

Problemi correlati