Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的日期选择器和持续时间_Javascript_Jquery - Fatal编程技术网

javascript中的日期选择器和持续时间

javascript中的日期选择器和持续时间,javascript,jquery,Javascript,Jquery,我有3个字段1:开始日期2:结束日期和3:持续时间,我想知道如何像这样计算(结束日期-开始日期+1=持续时间) 我的代码现在可以工作了,但需要再增加一天来计算,例如12月21日12月22日为2天 这是我的代码: $( ".datepicker" ).datepicker({ dateFormat: "yy-mm-dd" }); $('#start_date, #end_date').change(function(){ var startdate = $('#start

我有3个字段1:开始日期2:结束日期和3:持续时间,我想知道如何像这样计算(结束日期-开始日期+1=持续时间) 我的代码现在可以工作了,但需要再增加一天来计算,例如12月21日12月22日为2天

这是我的代码:

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


谢谢

这是我的解决方案。在计算之前,您应该将日期字符串转换为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 );
});

你似乎已经知道答案了,一天是
1000*60*60*24