2016-10-26 2 views
-1

У меня есть 3 поля 1: дата начала 2: дата окончания и 3: продолжительность, и я хочу знать, как я могу вычислить как это (end_date - star_tdate +1 = duration) мой код работает сейчас, но нужно добавить еще один день, чтобы подсчитать, например, 21 декабря 22 декабря в 2 дняДата и продолжительность в javascript

это мой код:

$(".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

Благодаря Than Нго Хоай, но до сих пор не работает! –

+0

Можете ли вы создать код фрагмента, а затем я попробую? –

Смежные вопросы