我正在使用javascript setDate
方法做一些日期操作,因此我的值originalDate
值丟失。下面是我想:setDate方法覆蓋原始日期
var originalDate = new Date();
var newDate = originalDate;
newDate.setDate(15);
我想那應該setDate()
只更新newDate
變量,而不是originalDate。我怎樣才能做到這一點。
謝謝。
我正在使用javascript setDate
方法做一些日期操作,因此我的值originalDate
值丟失。下面是我想:setDate方法覆蓋原始日期
var originalDate = new Date();
var newDate = originalDate;
newDate.setDate(15);
我想那應該setDate()
只更新newDate
變量,而不是originalDate。我怎樣才能做到這一點。
謝謝。
你的問題是,你要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)
這與相同的值originalDate
創建newDate
,但現在它們是2個不同的對象 。
試試這個
var originalDate = new Date();
var newDate = new Date();
newDate.setDate(15);
這個答案假定兩個日期最初都是相同的,只是因爲它們被連續調用。但是這個假設是不能保證的,如果'originalDate'是在代碼的其他地方生成的,那麼在任何情況下都會失敗。這是**保證**在遙遠的未來引入微妙的錯誤,當與預期的日期奇怪的日期,但意想不到的年份和月份出現在應用程序無處不在,沒有人記得爲什麼'newDate'不是在調用之前完全等於'originalDate' 'setDate'。 – shovavnik