2011-12-10 68 views
4

これは私のコードです:jqueryのDatePickerの+日付の差分計算

$(function() { 
    $("#arr_date").datepicker({ dateFormat: 'dd-mm-yy' }); 
    $("#dep_date").datepicker({ dateFormat: 'dd-mm-yy' }); 
}); 

$(function() { 
    var start = $('#arr_date').val(); 
    var end = $('#dep_date').val(); 
    var diff = new Date(end - start); 
    var days = diff/1000/60/60/24; 
    $('#num_nights').val(days); 
}); 

私はここstackoverflowの上でこの日付の差解決策を見つけたが、それは私のために動作しません。

日付差はまったく計算されません。私はそれが日付の書式(dd-mm-yy)のためかもしれないと思った。私もyyyy-mm-ddフォーマットで試してみましたが、うまくいきませんでした。

誰でも私を助け、問題の原因を教えてください。ありがとうございました。

答えて

18

ここで.val()を使用したくない場合は、文字列を与え、お互いに文字列を引くことはあまり有効ではありません。

var start = $('#arr_date').datepicker('getDate'); 
var end = $('#dep_date').datepicker('getDate'); 
var days = (end - start)/1000/60/60/24; 

デモ:http://jsfiddle.net/ambiguous/TCXcX/

また、このコード:

$(function() { 
    var start = $('#arr_date').val(); 
    var end = $('#dep_date').val(); 
    var diff = new Date(end - start); 
    var days = diff/1000/60/60/24; 
    $('#num_nights').val(days); 
}); 

が実行される日付ピッカーは、あなたがそれを使用することができるようにあなたのDateオブジェクトを与える方法、getDateを、持っていますDOMは準備ができていますが、日付が選択されるまで実行されません。

function showDays() { 
    var start = $('#arr_date').datepicker('getDate'); 
    var end = $('#dep_date').datepicker('getDate'); 
    if(!start || !end) 
     return; 
    var days = (end - start)/1000/60/60/24; 
    $('#num_nights').val(days); 
} 

$("#arr_date").datepicker({ dateFormat: 'dd-mm-yy', onSelect: showDays }); 
$("#dep_date").datepicker({ dateFormat: 'dd-mm-yy', onSelect: showDays }); 

、別のデモ:http://jsfiddle.net/ambiguous/5BbGS/

+0

ありがとうあなたはボタンにあなたの(補正)計算コードを結合するか、またはonSelectイベントを監視する必要があると思います。私はこれをしました。私のコードは次のようになります:$(function(){ \t var start = $( '#arr_date')。datepicker( 'getDate'); var end = $( '#dep_date')。datepicker( 'getDate') ; VAR日=(最終スタート)/ 1000から1060/24分の60; \t $( '#のnum_nights')のval(日)。 \t \t});しかし、まだ動作しません。私は何が欠けていますか? – Peter

+0

@Peter:私のアップデートをご覧ください。 –

+0

ありがとうございました。できます!あなたが私に2つ以上の評判を与えるなら、私はこれを投票することができます。もちろんもちろん、チェックマークもクリックします。 – Peter