2011-01-25 50 views
0

我一直在修補日期對象。用javascript處理日期對象

我想添加一天的動態數量到一天,然後將結果日期作爲變量並將其發佈到表單。

var startDate = $('#StartDate').datepicker("getDate"); 
    var change = $('#numnights').val(); 
    alert(change); 
    var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + change); 

除了最後一部分以外,其他的都正確。它並沒有添加日期到當天

take this scenario: 
startdate = 2011-03-01 
change = 1 
alert change = 1 
endDate = 2011-03-11 *it should be 2011-03-02* 

謝謝你所有的快速回復。

將變化變量轉換爲整數做了訣竅。謝謝。

parseInt(change) 

只是爲了對這個延伸:是否有分配的變量的類型的方式,如VAR電荷(INT)?

回答

2

您可能已經成爲字符串連接的受害者。

試着改變你的最後一個參數中的日期構造函數:startDate.getDate() + parseInt(change)

以供將來參考見this example

+0

將變量更改爲工作的整數。然而,如果一天進入新月,月份保持不變。 – goingsideways

+0

它不應該。例如,如果您調用了'var dt = new Date(2010,11,32);''dt對象將包含2011年1月1日。Date構造函數處理月和日的溢出。我可以爲你設置一個例子,看看你是否喜歡。 – nybbler

+0

請做。編號想知道這是如何工作的 – goingsideways

1

change轉換爲數字後再添加。它看起來像你得到了一個字符串連接操作,而不是你在代碼中所期望的。

1

我相信你是連接而不是使用數學運算符。試試這個,

var endDate = new Date(startDate.getFullYear(), startDate.getMonth(),startDate.getDate() + (+change)); 
1

它看起來像您不添加結束的一天,你concatinating這麼'1' + '1' = '11'

使用parseInt(),以確保您使用的整數

例如

工作
var change = parseInt($('selector').val()); 

此外,使用此解決方案,如果您在m的第29個開始日期說,您可能很容易就會結束一天超出範圍onth並獲得更改5