2016-10-26 6 views
-1

私は3つのフィールド1を持っています:開始日2:終了日と3:期間と私はこのように計算する方法を知りたいのですが(end_date - star_tdate +1 =期間) 日付ピッカーと期間はJavaScriptで

2日として例えば12月21日12月22日をカウントするためにもう1日追加する必要があり、これは私のコードです:

$(".datepicker").datepicker({ 
    dateFormat: "yy-mm-dd" 
}); 
$('#start_date, #end_date').change(function(){ 
    var startdate = $('#start_date').datepicker('getDate'); 
    var enddate = $('#end_date').datepicker('getDate'); 
    var dayDiff = Math.ceil((enddate - startdate)/ (1000 * 60 * 60 * 24)); 

    console.log(dayDiff ); 
    if(dayDiff > 0){ 
     jQuery('#duration').val(dayDiff); 
    }else{ 
     jQuery('#duration').val(1); 
    } 

}) 
jQuery('#duration').change(function(){ 
    var tmp = $('#start_date').datepicker('getDate')   
    tmp.setDate(tmp.getDate()+parseInt(jQuery('#duration').val())) ; 
    $("#end_date").datepicker("setDate", tmp); 
}) 

enter image description here

ありがとう!

+0

は、日が 'ゴホアイ1000 * 60 * 60の* 24' – adeneo

答えて

0

私の解決策です。計算する前に日付文字列をUTC時刻に変換する必要があります。

$(".datepicker").datepicker({ 
    dateFormat: "yy-mm-dd" 
}); 

function dateDiffInDays(a, b) { 
    // Discard the time and time-zone information. 
    var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate()); 
    var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate()); 

    return Math.floor((utc2 - utc1)/(1000 * 60 * 60 * 24)) + 1; 
} 

$('#start_date, #end_date').change(function(){ 
    var startdate = new Date($('#start_date').datepicker('getDate')); 
    var enddate = new Date ($('#end_date').datepicker('getDate')); 
    var dayDiff = dateDiffInDays(startdate, enddate); 

    console.log(dayDiff ); 

}); 


jQuery('#duration').change(function(){ 
    var tmp = $('#start_date').datepicker('getDate')   
    tmp.setDate(tmp.getDate()+parseInt(jQuery('#duration').val())) ; 
    $("#end_date").datepicker("setDate", tmp); 
}); 
あなたはすでに答えを知っているように見える
+0

おかげで、まだ動作していません! –

+0

スニペットコードを作成できますか? –