Как получить начальную дату недели каждого месяца в году, используя "момент"

Я использовал "момент" в моем проекте.

Я пытался получить целую неделю, начиная с данного года.

var weeksOfYear = moment("2018").weeks();

Но это не сработает.

Я хочу следующий вывод.

[1,8,15,22,29,5,12,19,26,5,12,19,26,2,9,16,23,30,7,14,21,28,4,11,18, 25,2,9,16,23,30,6,13,20,27,3,10,17,14,1,8,15,22,29,5,12,19,26,3,10, 17,24];

Если вы сравните вышеуказанный массив с календарем, то увидите, что это начальная дата недели 2018 года.

Скажите, пожалуйста, как мне этого добиться?

1 ответ

Решение

Это работает. Хотя я уверен, что у кого-то еще будет более аккуратный ответ.

var yearInQuestion = 2018;
var setYear = moment().set('year', yearInQuestion);
var firstMonday = (setYear.startOf('year')).startOf('isoweek');

// NB - Monday of that week might have been in the previous year
if (firstMonday.year() < yearInQuestion) {
    firstMonday.add(7, 'days');
}

var datesArray = [];
while (firstMonday.year() === yearInQuestion) {
    datesArray.push(firstMonday.date());
    firstMonday.add(7, 'days');
} 

console.log(datesArray);
Другие вопросы по тегам