我正在使用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这对于大多数月份都很有效,除了12月份,因为firstWeek和lastWeek分别是"48“和"1”,所以周是空的。
我知道我可以用一个更复杂的循环来解决这个问题,以检查每次迭代是高于还是低于前一次迭代,但我想知道是否有更自然/更简单的方法来实现这一点,使用date-fns (或es6)。
发布于 2019-04-17 07:05:21
最好是推迟获取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 weekshttps://stackoverflow.com/questions/51217410
复制相似问题