2015-09-21 10 views
5

Ho un piccolo problema con MomentJS che restituisce una data senza senso. Sto tentando di impostare la data sul primo di un determinato mese e anno. Ho provato quanto segue: -MomentJS restituisce date sconosciute per il 1 ° mese

var _year = 2015; 
var _month = 10; 
var _dateString = _year.toString() + '-' + _month.toString() + '-1'; 
var _date = moment(_dateString, 'YYYY-MM-D'); 
console.log('_date', _date.format('dddd, do MMMM YYYY')); 

Questo dà Thursday, 4th October 2015 come _date. Che non esiste Ho provato ad utilizzare .set() e .date(), entrambi danno lo stesso risultato: -

var _date = moment(_dateString, 'YYYY-MM-D').set('date', 1); 
> Thursday, 4th October 2015 

var _date = moment(_dateString, 'YYYY-MM-D').date(1); 
> Thursday, 4th October 2015 

Quindi, non riesco a vedere quello che sto facendo male ora, chiunque può offrire qualche suggerimento o aiuto?

Molte grazie.

risposta

5

Il vostro codice è corretto tranne che si dovrebbe usare il capitale D non piccola d in do:

console.log('_date', _date.format('dddd, Do MMMM YYYY')); 

Differenza tra Do e do è:

  • do è l'indice del giorno in settimana, ad esempio se controlli il calendario che troverai il 1 ° ottobre è Giovedì che è il 4 ° giorno della settimana come indice di partenza per m 0 e se sei passato al 2 ottobre che è venerdì ti darà 5 ° e lo stesso per 3 ott => 6 ° e poi la nuova settimana partirà da domenica poi 4 ott => 0 ° e ricomincerai da capo.

  • Do è l'indice del giorno del mese e quello che ci si aspetta che il risultato sia, 1 ° ott è 1 °, 2 ° ott => 2 ° e così via.

Controllare il docs qui per ulteriori informazioni

+0

@ mohamed-Ibrahim, doh! perfetto! grazie! :) – dooburt

+0

Solo un heads-up, il tuo 'Do' e' do' è il modo sbagliato nei tuoi esempi tra. – dooburt

+0

Grazie @dooburt corretto :) –