2011-01-25 11 views
0

私は日付オブジェクトを試しています。日付オブジェクトをjavascriptで操作しています

私は動的な日数を1日に追加し、その結果の日付を変数として取得してフォームに投稿したいと考えています。

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 charge(int)などの変数に型を割り当てる方法はありますか?

答えて

2

文字列連結の犠牲になった可能性があります。

はにDateコンストラクタであなたの最後のパラメータを変更してみてください:startDate.getDate() + parseInt(change)

今後の参考のためにthis exampleを参照してください。

+0

変数を整数に変更しました。しかし、その日が新しい月に入ると、月は同じままになります。 – goingsideways

+0

しないでください。たとえば、 'var dt = new Date(2010、11、32);を呼び出すと、dtオブジェクトには2011年1月1日が含まれます。Dateコンストラクタは月と日のオーバーフローを処理します。あなたが好きかどうかを確認するための例を設定することができます。 – nybbler

+0

としてください。 idはこれがどのように動作するかを知っていることを望みます – goingsideways

1

changeを追加する前に数値に変換してください。あなたのコードで期待しているのではなく、文字列の連結演算を行っているようです。

1

私はあなたが数学演算子を使用する代わりに連結していると信じています。あなたが終わる日を追加していないように、これは代わりに、

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

に見えます試してみてください、あなたはとても'1' + '1' = '11'

使用parseInt()あなたは整数

で作業していることを確認するためにそれをconcatinatingています
var change = parseInt($('selector').val()); 

また、このソリューションを使用すると、mの29日の開始日onthと変更を得る5

関連する問題