Javascript 如何获取所有周的开始日期和结束日期

Javascript 如何获取所有周的开始日期和结束日期,javascript,date,momentjs,Javascript,Date,Momentjs,我们如何获得本月的所有周开始日期和结束日期 下面的代码仅显示当前周的开始日期和结束日期 var startOfWeek=moment().startOf(“isoWeek”).toDate(); var endOfWeek=moment().endOf(“isoWeek”).toDate(); console.log(startOfWeek) console.log(endOfWeek) 当你在本月时,只需加/减7天就可以得到接下来和接下来的几周 let current = startOfWe

我们如何获得本月的所有周开始日期和结束日期

下面的代码仅显示当前周的开始日期和结束日期

var startOfWeek=moment().startOf(“isoWeek”).toDate();
var endOfWeek=moment().endOf(“isoWeek”).toDate();
console.log(startOfWeek)
console.log(endOfWeek)

当你在本月时,只需加/减7天就可以得到接下来和接下来的几周

let current = startOfWeek;

do {
  current = current.subtract(7, "days");  //or .add(7, "days") to get next week
} while (current.month() === startOfWeek.month())

这有趣吗不利用时间

不知道你想在第一个月之前开始或下个月结束的几周里做什么

const d=new Date(),
month=d.getMonth(),
yyyy=d.getFullYear(),
end=新日期(yyyy,月+1,0).getDate();
常量startEnd=Array.from(Array(end+1).keys()).slice(1)
.减少((acc,日)=>{
常数d=新日期(yyyy,月,日,15,0,0,0);
if(d.getDay()==1)acc.push({start:d});
否则如果(d.getDay()==6和&acc[acc.length-1])acc[acc.length-1][“end”]=d;
返回acc
},[])

console.log(startEnd)
这个问题提到ISO周,所以我想您希望一年中任何一个ISO周都在当月。您可以通过获取每月的第一天,设置为前一个星期一(如果是星期一,则设置为同一天),然后在几周内迭代,直到到达下一个月。例如

//月是日历月号
函数getISOWeeksInMonth(月=新日期().getMonth()+1,年=新日期().getFullYear()){
//月初一开始
让weekStart=新日期(年,月-1,1);
//设置为星期一之前
weekStart.setDate(weekStart.getDate()-(weekStart.getDay()| 7)+1);
//周末
let weekEnd=新日期(weekStart);
weekEnd.setDate(weekEnd.getDate()+6);
//获取第一周的周数
让weekNum=getWeekNumber(weekStart)[1];
//创建周数组
让周=[];
while(weekStart.getMonth()console.log(
“周:”+Week.weekNum+
'\n开始:'+week.start.toDateString()+
“\nEnd:”+week.end.toDateString())
);
//2021年2月的ISO周(从周一开始)
getISOWeeksInMonth(2021年2月)。forEach(week=>console.log(
“周:”+Week.weekNum+
'\n开始:'+week.start.toDateString()+
“\nEnd:”+week.end.toDateString())

);您称之为“本月的一周”是什么?是否有任何ISO周在当月有任何天数?只有那些主要在本月的?在本月开始的?等等。对于我来说,这是6天工作周,例如,第1周是9月7日星期一至9月12日星期六,省略了星期日。最后一周有开始(周一28),但没有结束-(我知道——我问你预期的结果是什么?