Javascript 在日期fns中迭代数周

Javascript 在日期fns中迭代数周,javascript,ecmascript-6,date-fns,Javascript,Ecmascript 6,Date Fns,我正在使用date fns库构建日历,我需要得到一个月的周数 let start = startOfMonth(date) let end = endOfMonth(date) let firstWeek = getISOWeek(start) let lastWeek = getISOWeek(end) let weeks = [] for (let i = firstWeek; i < lastWeek + 1; i++) { weeks.push(i) } return w

我正在使用date fns库构建日历,我需要得到一个月的周数

let start = startOfMonth(date)
let end = endOfMonth(date)
let firstWeek = getISOWeek(start)
let lastWeek = getISOWeek(end)

let weeks = []

for (let i = firstWeek; i < lastWeek + 1; i++) {
  weeks.push(i)
}

return weeks
let start=startOfMonth(日期)
let end=月底(日期)
let firstWeek=getISOWeek(开始)
let lastWeek=getISOWeek(结束)
让周=[]
for(设i=firstWeek;i
这适用于大多数月份,但12月份除外,因为firstWeek和lastWeek分别为“48”和“1”,所以周为空


我知道我可以用一个更复杂的循环来解决这个问题,检查每个迭代是否比前一个迭代高或低,但我想知道是否有一种更自然/简单的方法使用日期fns(或es6)来实现这一点。

最好推迟ISO周的获取,并在实际日期上迭代,而不是处理周索引号

let startOfCurrent = startOfMonth(date)
let startOfNext = addMonths(startOfCurrent, 1)

let weeks = []

for (let i = startOfCurrent; isBefore(i, startOfNext); i = addWeeks(i, 1)) {
  weeks.push(getISOWeek(i))
}

return weeks