我需要编写一个简单的代码,但我的语法有问题。
我需要用moment.js对象填充数组。此数组包含两个日期之间的所有日期。这是我实现这一目标的逻辑。
目前这是我提出的(但它不起作用)。
my_division = fields.Boolean(
string='My division',
default=False,
)
@api.model
def create(self, vals)
opportunity = super(CrmOpportunity, self).create(vals)
if opportunity.owner_id.business_unit_id.id == self.env.user.partner_id.business_unit_id.id:
opportunity.write({
'my_division': True,
})
return opportunity
@api.multi
def write(self, vals)
update = super(CrmOpportunity, self).write(vals)
for opportunity in self:
if opportunity.owner_id.business_unit_id.id == self.env.user.partner_id.business_unit_id.id and \
opportunity.my_division is False:
opportunity.write({
'my_division': True,
})
elif opportunity.owner_id.business_unit_id.id != self.env.user.partner_id.business_unit_id.id and \
opportunity.my_division is True:
opportunity.write({
'my_division': False,
})
else:
continue
return update
这会导致我的应用崩溃。当我记录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
我认为我的语法错了,但我无法弄清楚是什么。
答案 0 :(得分:4)
通过将原始时刻设置为单位时间的开始来突变原始时刻。
你必须使用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");
}
答案 1 :(得分:1)
this.currentDate.startOf(“month”)更改this.currentDate本身, 所以this.currentDate&开始&结束同一时刻的对象。 因为添加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");
}