2014-02-25 91 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