2014-02-25 56 views
0

我正在使用javascript setDate方法做一些日期操作,因此我的值originalDate值丢失。下面是我想:setDate方法覆盖原始日期

var originalDate = new Date(); 
var newDate = originalDate; 
newDate.setDate(15); 

我想那应该setDate()只更新newDate变量,而不是originalDate。我怎样才能做到这一点。

谢谢。

回答

2

你的问题是,你要newDate分配的originalDate参考,所以在相同的Date对象它们都指向。

另一种可能性:

的Javascript

function cloneDate(dateObject) { 
    return new Date(dateObject.valueOf()); 
} 

var originalDate = new Date(), 
    newDate = cloneDate(originalDate); 

newDate.setDate(15); 

console.log(originalDate); 
console.log(newDate); 

输出

 
Tue Feb 25 2014 07:13:53 GMT+0100 (CET) 
Sat Feb 15 2014 07:13:53 GMT+0100 (CET) 

jsFiddle

这与相同的值originalDate创建newDate,但现在它们是2个不同的对象 。

0

试试这个

var originalDate = new Date(); 
var newDate = new Date(); 
newDate.setDate(15); 
+0

这个答案假定两个日期最初都是相同的,只是因为它们被连续调用。但是这个假设是不能保证的,如果'originalDate'是在代码的其他地方生成的,那么在任何情况下都会失败。这是**保证**在遥远的未来引入微妙的错误,当与预期的日期奇怪的日期,但意想不到的年份和月份出现在应用程序无处不在,没有人记得为什么'newDate'不是在调用之前完全等于'originalDate' 'setDate'。 – shovavnik