Javascript 使用Moment.js获取每周的所有天数
给定ISO周数,如何使用Moment.js获取一周中的所有天数?如果是一个月的开始,而不是星期一,上个月的最后几天也应该返回Javascript 使用Moment.js获取每周的所有天数,javascript,date,momentjs,Javascript,Date,Momentjs,给定ISO周数,如何使用Moment.js获取一周中的所有天数?如果是一个月的开始,而不是星期一,上个月的最后几天也应该返回 示例:moment.daysOfISOWeek(28,'DD')//返回[06 07 08 09 10 11 12]您可以通过多种方式来实现这一点,一种是获取一年中的第一周,添加所需的周数,然后循环获取所需周的所有天 另一种方法是以ISO年-周格式构建字符串,并使用矩将其解析为日期,例如,对于2020年的第28周矩('2020W28'),然后如上所述循环一周 下面将演示这
示例:
moment.daysOfISOWeek(28,'DD')//返回[06 07 08 09 10 11 12]
您可以通过多种方式来实现这一点,一种是获取一年中的第一周,添加所需的周数,然后循环获取所需周的所有天
另一种方法是以ISO年-周格式构建字符串,并使用矩将其解析为日期,例如,对于2020年的第28周矩('2020W28')
,然后如上所述循环一周
下面将演示这两种方法
/*返回一年中第n个ISO周的日期数组
**@param{number | string}isoWeekNum-ISO周数,默认为1
**@param{number | string}year-ISO周年,默认为当前年份
**@返回指定星期的7个日期的{Array}
*/
函数getISOWeekDates(isoWeekNum=1,year=new Date().getFullYear()){
设d=moment().isoWeek(1).startOf('isoWeek').add(isoWeekNum-1,'weeks');
对于(变量日期=[],i=0;i<7;i++){
推送日期(d.format('ddd-DD-MMM-YYYY');
d、 添加(1,'天');
}
返回日期;
}
//上述文件
函数getISOWeekDates2(isoWeekNum=1,year=new Date().getFullYear()){
设d=力矩(字符串(年).padStart(4,'0')+'W'+
字符串(isoWeekNum).padStart(2,'0');
对于(变量日期=[],i=0;i<7;i++){
推送日期(d.format('ddd-DD-MMM-YYYY');
d、 添加(1,'天');
}
返回日期;
}
//计算周初
console.log(getISOWeekDates())
//使用ISO 8601 yearWweek格式,例如2020W28
console.log(getISOWeekDates2())
console.log(getISOWeekDates2(28))
您可能会获得第一个ISO周的开始时间,然后再增加28 x 7天以获得第28周的开始时间。循环6次,每次增加一天,得到完整的一周。你试过什么?你将使用哪一年?每年开始和结束的几天通常是上一年或下一年的每周计数。