2011-12-10 139 views
4

這是我的代碼:jQuery的日期選擇器+日期差異計算

$(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); 
}); 

我發現這裏這個日期的差異液對計算器,但它並沒有爲我工作。

它根本不計算日期差異。我認爲這可能是由於日期格式(dd-mm-yy)。我已經用yyyy-mm-dd格式嘗試過了,但它也不起作用。

任何人都可以幫助我,告訴我什麼可能會導致問題?謝謝。

回答

18

你不想在這裏使用.val(),那會給你一個字符串,並且從對方減去字符串不是非常有用。在日期選擇器有一個方法,getDate,這給你一個Date對象,所以你可以使用:

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); 
}); 

將運行時DOM已準備就緒,但您不希望它在選定日期之前運行。你需要你的(修正)計算代碼綁定到一個按鈕或觀看onSelect事件:

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

謝謝。我已經做到了。我的代碼如下所示:$(function(){ \t var start = $('#arr_date')。datepicker('getDate'); var end = $('#dep_date')。datepicker('getDate') ; VAR天=(端開始)/ 1000/60 /二十四分之六十; \t $( '#num_nights')VAL(天); \t \t });但仍然不起作用。我錯過了什麼? – Peter

+0

@Peter:請參閱我的更新。 –

+0

非常感謝您的幫助。有用!如果你給我兩個更多的聲望,那麼我將能夠投票。另外當然,我也點擊複選標記。 – Peter