在momentjs中的几周

时间:2017-07-21 20:04:16

标签: javascript arrays function methods momentjs

我需要使用moment()获得每周包含7天的数组,但是将对象推送到数组会替换整个数组。

const start = moment().clone().startOf('month').startOf('week');
const end = start.clone().add(6, 'week').subtract(1, 'day');

const weeks = [];
let days = [];

for (let day = start; day.isSameOrBefore(end); day.add(1, 'day')) {
    days.push({
        date: day.date()
    });

    if (day.clone().endOf('isoWeek')) {
        weeks.push(days);
        days = [];
    }
}

console.log(weeks);

weeks.length应该是6,但它是42。

示例代码:

https://codepen.io/anon/pen/RZbKBR?editors=1111

1 个答案:

答案 0 :(得分:1)

问题是moment().endOf('isoWeek')将时刻改为一周末,而不是返回布尔值,因此day.clone().endOf('isoWeek').diff(day, 'days') === 0正常工作