date.js计算不正确

时间:2013-12-04 12:22:07

标签: javascript jquery date

我正在尝试检查所选日期是否为星期日(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();

3 个答案:

答案 0 :(得分:0)

您的问题是.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();

答案 1 :(得分:0)

正如@trojandestroy指出的那样(正在编写这个答案),你会得到这样的结果,因为你总结了几天。

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

我让this example fiddle证明它实际上是这样的。

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

答案 2 :(得分:0)

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

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

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

Here's a fiddle比较两种方法。