时刻 - 获得一个月中的第一个和最后一周(整周)

Nic*_*las 1 javascript momentjs

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

我需要用 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");
}
Run Code Online (Sandbox Code Playgroud)

这会导致我的应用程序崩溃。当我记录我的start&end我看到这两天都是一样的。

Sun Mar 04 2018 23:59:59 GMT+0100 (Romance Standard Time)

我假设我的语法是错误的,但我无法弄清楚是什么。

Vin*_*zoC 5

无论startOf()endOf()变异原文:

通过将其设置为时间单位的开始来改变原始时刻。

你必须使用clone()

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

调用moment()片刻将克隆它。

您的代码可能如下所示:

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");
}
Run Code Online (Sandbox Code Playgroud)