2010-09-23 30 views
0

如何獲取日期並減去1年,並有第二個日期用於顯示和計算?Javascript需要兩個日期實例保持獲取引用

我與JS一個newbe和發現自己的戰鬥日期對象
我已經在全局區域 但現在在函數聲明爲的currentdate和而purchaseDate由於VAR新的日期()我嘗試分配原始日期作爲「currentDate和購買日期」爲一年後,此警報顯示我已更改currentDate的價值,而不僅僅是purchaseDate的價值,因爲我打算。

不是我想要的!所以我得到通過引用傳遞VS按值,但不知道如何得到這個讓我對的currentdate和

currentDate = data.getValue(0,2); 
purchaseDate = valueOf(data.getValue(0,2)); 
purchaseDate.setFullYear(purchaseDate.getFullYear()-1); 

alert(purchaseDate); 

所以這段代碼也失敗而purchaseDate(一年前)兩個獨立的價值;也就是說,,購買之日起1年回來,但這樣是當前日期

currentDate = data.getValue(0,2); 
    purchaseDate = data.getValue(0,2); 
      purchaseDate.setFullYear(purchaseDate.getFullYear()-1); 
alert(purchaseDate); 

回答

1

您發佈的代碼是太曖昧了可靠地指出你的問題的根本原因(目前還不清楚是什麼valueOf()正在做),但基本上,您確實需要根據其他Date的時間創建新的Date實例。以下是你如何做到這一點,假設currentDate也是一個真正的Date

var purchaseDate = new Date(currentDate.getTime()); 

這裏是一個完整的開球例如:

var currentDate = new Date(); 
var purchaseDate = new Date(currentDate.getTime()); 
purchaseDate.setFullYear(purchaseDate.getFullYear() - 1); 
alert(currentDate); // Today. 
alert(purchaseDate); // Today minus one year. 
+0

與代碼的問題是,它假定這兩個日期是獨立的,我需要從其他計算一個日期,這就是爲什麼在基準問題彈出即使我放棄了valueOF,我正試圖強制一個新的實例。所以我需要從表中獲取currentDate如表所示,然後計算purchaseDate從我從表中獲得的日期起算,因此它不基於系統日期...而是通過Ajax查詢獲得的一個日期。到目前爲止所有的嘗試似乎都通過引用,所以currentDate和purchaseDate都變了 – dartdog 2010-09-23 02:57:00

+0

所以'var purchaseDate = new Date(currentDate.getTime());'不適合你?順便說一句,完整的例子只是一個開創性的例子。你只需要用你的情況的值代替這個例子。例如。 'var currentDate = data.getValue(0,2);'。由於我不知道'data.getValue(0,2)'在做什麼,因此我沒有在示例中包含它以避免紅鯡魚。只要它返回'Date',上面就應該可以工作。 – BalusC 2010-09-23 03:18:45