Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Moment.js获取每周的所有天数_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 使用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'),然后如上所述循环一周 下面将演示这

给定ISO周数,如何使用Moment.js获取一周中的所有天数?如果是一个月的开始,而不是星期一,上个月的最后几天也应该返回


示例:
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次,每次增加一天,得到完整的一周。你试过什么?你将使用哪一年?每年开始和结束的几天通常是上一年或下一年的每周计数。