2014-04-28 123 views
0
var date = new Date(); 
var date2 = new Date();   
daysinadvance = document.getElementById('AdvanceDays').value; 
date2.setDate(date.getDate()+daysinadvance); 
console.log(date2 + date + daysinadvance); 

Fri Jan 28 2022 18:13:43 GMT+0000 (GMT Daylight Time) 
Mon Apr 28 2014 18:13:43 GMT+0100 (GMT Standard Time) 
60 

如果我傳入一個直接輸入的數字so + 60,它工作正常,但使用變量,我得到一個2022年的日期。我想要的是date2是當前日期+ 60那麼我可以更新我的驗證。Javascript日期添加天

請幫忙嗎?

+2

不要忘記,你正在用'.value'調用一個STRING,然後嘗試用它進行數學運算。如果JS正在產生字符串聯合,例如'28 + 6 = 286'而不是'28 + 6 = 34',你會傳遞不錯的日期值到setDate()。 –

+0

解析該值可能有一個問題('input type =「text」'將返回* string *值,即「60」)。否則它正在工作 – Praveen

回答

8

首先將該值轉換爲數字,例如,與unary plus操作:

var daysinadvance = +document.getElementById('AdvanceDays').value; 
//    ^unary plus 

否則daysinadvance將是一個字符串,你在做字符串連接。

+0

我在想這個,會parseInt()的工作呢? – 13ruce1337

+0

@ 13ruce1337:是的。 –

+0

@ 13ruce1337,只比你需要的多9個字節;) – Metalstorm