date.js计算不正确

date.js not calculating correctly

本文关键字:不正确 计算 js date      更新时间:2024-03-12

我正在尝试检查所选的日期是否是星期日(jquery ui),如果是,则将其调整为之前的星期六,并计算第5天、第4天和第3天。我的代码只是在同一天返回。

c1、c2和c3是相同的。

if(Date.parse($('#arrival_date').val()).is().sunday()) {
    first_day = Date.parse($('#arrival_date').val()).add(-1).days();    
}
else {
    first_day = Date.parse($('#arrival_date').val());
}
console.log(first_day);
var c1 = first_day.add(-5).days();
var c2 = first_day.add(-4).days();
var c3 = first_day.add(-3).days();

您的问题是.add()方法更改了first_day变量。尝试

var c1 = first_day.clone().add(-5).days();
var c2 = first_day.clone().add(-4).days();
var c3 = first_day.clone().add(-3).days();

正如@trojandestroy所指出的(当is写这个答案时),你会得到这样的结果,因为你加起来的天数。

这可能有点违反直觉,但它的工作原理是这样的——通过调用first_day.add(-5).days();,您可以更改first_day的值。

我做了这个例子来证明它确实是这样工作的。

呼叫var c1 = first_day.add(-5).days();后,c1first_day都指向5天前。

所有.add()语句都在同一对象上操作,并且将c1c2c3设置为相同对象。这意味着有四个变量都等于同一个对象。

要解决此问题,请将构造函数与Date对象的getTime()方法组合起来,如下所示:

var c1 = new Date(first_date.getTime()).add(-5).days();

这是一个比较这两种方法的小提琴。