Javascript 如何使用“获取一年中每个月的一周开始日期”;“时刻”;

Javascript 如何使用“获取一年中每个月的一周开始日期”;“时刻”;,javascript,momentjs,Javascript,Momentjs,我在我的项目中使用了“瞬间” 我试着从给定年份的开始日期算起整整几个星期 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] 如果将上述数组与日历进行比较

我在我的项目中使用了“瞬间”

我试着从给定年份的开始日期算起整整几个星期

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年一周的开始日期


请告诉我,我该如何实现它?

这很有效。虽然我相信其他人会有一个更简洁的答案

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);
var yearInQuestion=2018;
var setYear=moment().set('年',有问题的年份);
var firstMonday=(setYear.startOf('year')).startOf('isoweek');
//NB-该周的周一可能是前一年
如果(第一个星期一.年()<问题中的年){
第一个星期一。添加(7,‘天’);
}
var datesArray=[];
while(firstMonday.year()==yearInQuestion){
datesArray.push(firstMonday.date());
第一个星期一。添加(7,‘天’);
} 
控制台日志(datesArray);

@ChrisG我知道。但我问的是逻辑,我将如何实现它。从第一步开始。“momentjs find First monday”的第一个谷歌结果:正如你提到的逻辑,我已经做了。我得到了1,8,15,22,29如果我得到了29,加上7,那么它将变成36。我的意思显然是“使用momentjs命令在日期前加上7天”好吧,让我试试……是的,它很有效。我的解决方案仅适用于2018年,但您的解决方案适用于所有年份。感谢您提出这个问题-我今天学到了一些东西:)