我需要编写一个简单的代码,但我遇到了语法问题。
我需要用moment.js对象填充数组。此数组包含两个日期之间的所有日期。这是我实现这一目标的逻辑。
目前这是我提出的(但它不起作用)。
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");
}
这会造成我的应用程序崩溃。当我记录我的start
和end
时,我发现两天都是一样的。
Sun Mar 04 2018 23:59:59 GMT+0100 (Romance Standard Time)
我认为我的语法错了,但我无法弄清楚是什么。
通过将原始时刻设置为单位时间的开始来突变原始时刻。
你必须使用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");
}
this.currentDate.startOf(“month”)改变this.currentDate本身,所以this.currentDate&start&end ref改为同一时刻的对象。因为添加1天开始导致结束添加1天,'start.isSameOrBefore(end)'始终为true而while(start.isSameOrBefore(end)){}处于无限循环
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");
}