Javascript 时刻-获得一个月内的第一周和最后一周(整个星期)

Javascript 时刻-获得一个月内的第一周和最后一周(整个星期),javascript,momentjs,Javascript,Momentjs,我需要写一个简单的代码,但是语法有问题 我需要用moment.js对象填充一个数组。此数组包含两个日期之间的所有日期。这是我实现这一目标的逻辑 在本例中,获取一个月第一周的星期一,即26/02。 在本例中,获取一个月最后一周的星期日,即01/04。 在数组中推送日期的while循环。 目前这是我想到的,但它不起作用 let start = this.currentDate.startOf("month").startOf("isoWeek"); let end = this.currentDat

我需要写一个简单的代码,但是语法有问题

我需要用moment.js对象填充一个数组。此数组包含两个日期之间的所有日期。这是我实现这一目标的逻辑

在本例中,获取一个月第一周的星期一,即26/02。 在本例中,获取一个月最后一周的星期日,即01/04。 在数组中推送日期的while循环。 目前这是我想到的,但它不起作用

let start = this.currentDate.startOf("month").startOf("isoWeek");
let end = this.currentDate.endOf("month").endOf("isoWeek");
while (start.isSameOrBefore(end)) {
    this.month.push(start);
    start.add(1, "days");
}
这会使我的应用程序崩溃。当我记录我的开始和结束时,我发现这两天是一样的

2018年3月4日星期日23:59:59 GMT+0100标准时间

我假设我的语法是错误的,但我无法找出是什么。

两者都有,并对原始语法进行了修改:

通过将原始力矩设置为一个时间单位的起点来对其进行变异

您必须使用:

所有的时刻都是可变的。如果你想要一个瞬间的克隆,你可以隐式或显式地这样做

在某个时刻调用某个时刻将克隆它

您的代码可能如下所示:

let start = this.currentDate.clone().startOf("month").startOf("isoWeek");
let end = this.currentDate.clone().endOf("month").endOf("isoWeek");
while (start.isSameOrBefore(end)) {
    this.month.push(start);
    start.add(1, "days");
}
并对原始文件进行了修改:

通过将原始力矩设置为一个时间单位的起点来对其进行变异

您必须使用:

所有的时刻都是可变的。如果你想要一个瞬间的克隆,你可以隐式或显式地这样做

在某个时刻调用某个时刻将克隆它

您的代码可能如下所示:

let start = this.currentDate.clone().startOf("month").startOf("isoWeek");
let end = this.currentDate.clone().endOf("month").endOf("isoWeek");
while (start.isSameOrBefore(end)) {
    this.month.push(start);
    start.add(1, "days");
}

this.currentDate.startOfmonth更改this.currentDate本身, 因此,这个.currentDate&start&end引用指向同一个力矩对象。 因为“开始添加1天”导致“结束添加1天”,所以“start.issameorfeend”始终为true,而start.issameorfeend则始终为true{ } 在无限循环中

    let start = moment(this.currentDate).startOf("month").startOf("isoWeek");
    let end = moment(this.currentDate).endOf("month").endOf("isoWeek");
    while (start.isSameOrBefore(end)) {
         this.month.push(start);
         start.add(1, "days");
    }

this.currentDate.startOfmonth更改this.currentDate本身, 因此,这个.currentDate&start&end引用指向同一个力矩对象。 因为“开始添加1天”导致“结束添加1天”,所以“start.issameorfeend”始终为true,而start.issameorfeend则始终为true{ } 在无限循环中

    let start = moment(this.currentDate).startOf("month").startOf("isoWeek");
    let end = moment(this.currentDate).endOf("month").endOf("isoWeek");
    while (start.isSameOrBefore(end)) {
         this.month.push(start);
         start.add(1, "days");
    }