2015-09-21 2 views
5

У меня возникла небольшая проблема с MomentJS, возвращающим бессмысленную дату. Я пытаюсь установить дату в первый из данного месяца и года. Я попытался следующие: -MomentJS возвращает неясную дату на 1-й месяц

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

Это дает Thursday, 4th October 2015 как _date. Который не существует. Я попытался с помощью .set() и .date(), оба дают одинаковый результат: -

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 

Таким образом, я не могу видеть, что я делаю неправильно сейчас, кто может предложить какие-либо предложения или помочь?

Большое спасибо.

ответ

5

Ваш код правильно, за исключением вы должны использовать капитал D не маленький d в do:

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

Разница между Do и do является:

  • do является показателем дня в неделю, например, если вы проверите календарь, вы обнаружите, что 1 октября - четверг, четвертый день недели, когда начинается индекс m 0, и если вы изменили на 2 октября, то есть в пятницу, он даст вам 5-е и то же за 3 октября => 6-е, а затем начнется новая неделя с воскресенья, а затем 4 октября => 0-й и начнется снова.

  • Do - это индекс дня в месяце и то, что вы ожидали от результата, 1 октября - 1-й, 2-й октябрь => 2-й и так далее.

Проверить docs здесь для получения дополнительной информации

+0

@ Mohamed-Ibrahim, DOH! пятно на! Спасибо! :) – dooburt

+0

Просто хедз-ап, ваши 'Do' и' do' - это неправильный путь в ваших примерах. – dooburt

+0

Спасибо @dooburt fixed :) –

Смежные вопросы