使用.change javascript计算不包括周末的两个日期之间的时间

使用.change javascript计算不包括周末的两个日期之间的时间,javascript,php,jquery,Javascript,Php,Jquery,我已经知道两次约会的区别了。现在我需要排除周末,并在持续时间输入中显示它。例如:我选择从(2020年3月2日)到(2020年3月9日)的日期。持续时间应显示为6天,因为它需要扣除2天,即周六和周日。 二,/ 这里有一个解决方案,它迭代日期,以确定包括多少个周末: // this value is fetched again in order to keep the original value of 'start' from changing let dateInRange = new Date

我已经知道两次约会的区别了。现在我需要排除周末,并在持续时间输入中显示它。例如:我选择从(2020年3月2日)到(2020年3月9日)的日期。持续时间应显示为6天,因为它需要扣除2天,即周六和周日。 二,/


这里有一个解决方案,它迭代日期,以确定包括多少个周末:

// this value is fetched again in order to keep the original value of 'start' from changing
let dateInRange = new Date (document.getElementById('FromDate').value);
let numberOfWeekendDaysInRange = 0;
// here we are making use of the existing 'end' object
while (dateInRange.toISOString() < end.toISOString()) {
        if (isWeekend(dateInRange)) {
            numberOfWeekendDaysInRange += 1;
    }
    // add a day; this internally takes care of shifting months and years
    dateInRange = new Date(dateInRange.getFullYear(), dateInRange.getMonth(), dateInRange.getDate() + 1);
}

function isWeekend(date) {
    // 0 is sunday, 6 is saturday
    return date.getDay() === 0 || date.getDay() === 6;
}
//再次获取此值是为了防止“start”的原始值发生更改
让dateInRange=新日期(document.getElementById('FromDate').value);
设numberOfWeekendDaysInRange=0;
//这里我们使用现有的“end”对象
while(dateInRange.toISOString()
剩下的就是从公式中减去
numberOfWeekendDaysInRange


有关使用的方法,请咨询。

我已经找到了解决方案

function excludeweekend (startDate, endDate) {
    var elapsed, daysBeforeFirstSaturday, daysAfterLastSunday;
    var ifThen = function (a, b, c) {
        return a == b ? c : a;
    };

    elapsed = endDate - startDate;
    elapsed /= 86400000;

    daysBeforeFirstSunday = (7 - startDate.getDay()) % 7;
    daysAfterLastSunday = endDate.getDay();

    elapsed -= (daysBeforeFirstSunday + daysAfterLastSunday);
    elapsed = (elapsed / 7) * 5;
    elapsed += ifThen(daysBeforeFirstSunday - 1, -1, 0) + ifThen(daysAfterLastSunday, 6, 5);

    return Math.ceil(elapsed);
}


//duration calculation
$(document).ready(function(){
$('#FromDate').change(function(){

ToDate.min=document.getElementById('FromDate').value;
var start = new Date (document.getElementById('FromDate').value);
var end = new Date (document.getElementById('ToDate').value);
var duration = new Date();

var different = end.getTime() - start.getTime();
// duration = (different/(1000*60*60*24))+1;
duration=excludeweekend(new Date(start), new Date(end));
document.getElementById('duration').value = duration;
});


$('#ToDate').change(function(){
var start = new Date (document.getElementById('FromDate').value);
var end = new Date (document.getElementById('ToDate').value);
var duration = new Date();

var different = end.getTime() - start.getTime();
// duration = (different/(1000*60*60*24))+1;
duration=excludeweekend(new Date(start), new Date(end));
document.getElementById('duration').value = duration;
});
});
function excludeweekend (startDate, endDate) {
    var elapsed, daysBeforeFirstSaturday, daysAfterLastSunday;
    var ifThen = function (a, b, c) {
        return a == b ? c : a;
    };

    elapsed = endDate - startDate;
    elapsed /= 86400000;

    daysBeforeFirstSunday = (7 - startDate.getDay()) % 7;
    daysAfterLastSunday = endDate.getDay();

    elapsed -= (daysBeforeFirstSunday + daysAfterLastSunday);
    elapsed = (elapsed / 7) * 5;
    elapsed += ifThen(daysBeforeFirstSunday - 1, -1, 0) + ifThen(daysAfterLastSunday, 6, 5);

    return Math.ceil(elapsed);
}


//duration calculation
$(document).ready(function(){
$('#FromDate').change(function(){

ToDate.min=document.getElementById('FromDate').value;
var start = new Date (document.getElementById('FromDate').value);
var end = new Date (document.getElementById('ToDate').value);
var duration = new Date();

var different = end.getTime() - start.getTime();
// duration = (different/(1000*60*60*24))+1;
duration=excludeweekend(new Date(start), new Date(end));
document.getElementById('duration').value = duration;
});


$('#ToDate').change(function(){
var start = new Date (document.getElementById('FromDate').value);
var end = new Date (document.getElementById('ToDate').value);
var duration = new Date();

var different = end.getTime() - start.getTime();
// duration = (different/(1000*60*60*24))+1;
duration=excludeweekend(new Date(start), new Date(end));
document.getElementById('duration').value = duration;
});
});