我正在尝试检查所选日期是否为星期日(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();
答案 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();
后,c1
和first_day
都指向5天前。
答案 2 :(得分:0)
您的所有.add()
语句都在同一个对象上运行,并且您将c1
,c2
和c3
设置为相同的对象。这意味着您有四个变量都等于完全相同的对象。
要解决此问题,请将构造函数与Date
对象的getTime()
方法结合使用,如下所示:
var c1 = new Date(first_date.getTime()).add(-5).days();
Here's a fiddle比较两种方法。