javascript中的日期选择器和持续时间
我有3个字段1:开始日期2:结束日期和3:持续时间,我想知道如何像这样计算(结束日期-开始日期+1=持续时间) 我的代码现在可以工作了,但需要再增加一天来计算,例如12月21日12月22日为2天 这是我的代码: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
$( ".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