2011-10-25 9 views
1

開始日と終了日を取得するために日付セレクタ入力に日数を追加しようとしています。私は間違った終了日を得ていて、理由を見ることができません。jQuery日に日を追加する

例:25-10-2011選択した日付、日1

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

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 @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夏時間) .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; 
} 
関連する問題