2015-09-21 12 views
5

Mam mały problem z MomentJS zwracającym bzdurną datę. Próbuję ustawić datę na pierwszą z danego miesiąca i roku. Próbowałem następujące: -MomentJS zwraca niewidoczną datę 1 dnia miesiąca

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

Daje Thursday, 4th October 2015 jako _date. Który nie istnieje. Próbowałem za pomocą .set() i .date(), zarówno dać taki sam efekt: -

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 

Więc, nie mogę zobaczyć, co robię źle teraz, może ktoś oferują wszelkie sugestie lub pomoc?

Wielkie dzięki.

Odpowiedz

5

Twój kod jest poprawny z wyjątkiem należy użyć kapitale D nie mały d w do:

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

Różnica między Do i do jest:

  • do jest indeksem dzień w Tydzień, na przykład po sprawdzeniu kalendarza znajdziesz 1 października to czwartek, który jest czwartym dniem tygodnia jako początek indeksu m 0 i jeśli zmienisz na 2 października, który jest piątek, da ci to 5 i to samo dla 3 października => 6, a potem nowy tydzień zacznie się od niedzieli, potem 4 października => 0 i zacznie od nowa.

  • Do to indeks dnia w miesiącu i oczekiwany wynik, 1 października to 1, 2 października => 2 i tak dalej.

Sprawdź docs tutaj, aby uzyskać więcej informacji

+0

@ mohamed-Ibrahim, doh! na miejscu! Dziękuję Ci! :) – dooburt

+0

Po prostu heads-up, twoje 'Do' i' zrobić' jest złą drogą w twoich przykładach. – dooburt

+0

Dzięki @doburt naprawiony :) –