2011-10-25 163 views
1

我想添加日期選擇器輸入以獲取開始日期和結束日期的天數。我得到一個不正確的結束日期,不知道爲什麼。jQuery添加日期到日期

例如:選擇2011-10-25日期,天1

結果:DATE_START 2011年9月25日,DATE_END 2012-5-7

function makeUpDates(){ 
     // concantenate values to date_start and date_end hidden inputs 
     var dateString = document.getElementById('date').value, 
     date = new Date(dateString); 
     document.getElementById('date_start').value = date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate(); 

     var numDays = document.getElementById('slider').value; 
     date.setDate(date.getDate() + numDays); 
     var dateEnd = date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate(); 
     document.getElementById('date_end').value = dateEnd; 
} 
+0

@Keith Power它似乎正在工作,減去您從控件中提取的值。 http://jsfiddle.net/fTcBQ/2/ –

回答

1

問題是在添加之前,必須將numDays轉換爲整數。否則我會得到奇怪的結果。

function makeUpDates(){ 
     // concantenate values to date_start and date_end hidden inputs 
     var dateString = document.getElementById('date').value, 
     date = new Date(dateString); 
     alert (date); 
     document.getElementById('date_start').value = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate(); 

     var numDays = document.getElementById('slider').value; 
     date.setDate(date.getDate() + parseInt(numDays)); 

     var dateEnd = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + date.getDate(); 
     document.getElementById('date_end').value = dateEnd; 
} 
2
var today  =new Date('12/22/1978'); 
var in_a_day =new Date(today).setDate(today.getDate()+1); //+1 or +x 

編輯您的日期格式應是:mm/dd/yyyy

+0

-1 OP已經在做這個,date.setDate(date.getDate()+ numDays); –

+0

@Aaron McIver-他的問題在於建造日期對象。不在setDate語句中...... –

+0

我檢查日期var的格式是Tue Oct 25 2011 00:00:00 GMT + 0100(GMT Daylight Time),我如何在添加日期的同時格式化.setDate(date.getDate()+ numDays); ? –

3

我更喜歡將參數傳遞給函數而不是使用隱藏的輸入。我還希望日期以原始格式出來,因爲我正在使用日期選擇器,希望以特定格式顯示日期字符串。我還決定使這個函數在日期分隔符和填充方面更加靈活。用法:AddDaysToDate(「03/18/2016」,5,「/」),增加5天,因此返回「03/23/2016」。

function AddDaysToDate(sDate, iAddDays, sSeperator) { 
    //Purpose: Add the specified number of dates to a given date. 
    var date = new Date(sDate); 
    date.setDate(date.getDate() + parseInt(iAddDays)); 
    var sEndDate = LPad(date.getMonth() + 1, 2) + sSeperator + LPad(date.getDate(), 2) + sSeperator + date.getFullYear(); 
    return sEndDate; 
} 
function LPad(sValue, iPadBy) { 
    sValue = sValue.toString(); 
    return sValue.length < iPadBy ? LPad("0" + sValue, iPadBy) : sValue; 
}