计算天数函数返回错误的计数

问题描述 投票:0回答:1

我有一个javascript函数,当我选择像11月20日到11月22日这样的日期时,我得到的计数是2而不是3,我在这里做错了什么,我尝试调试代码,但无法弄清楚出了什么问题

是时区的原因吗

enter image description here

这是我的JS代码

function dConvert(d, seprater = '/') {
    let aFormate = dateFormat.split(seprater);
    let aD = d.split(seprater);
    let oD = aFormate.reduce((acc, val, ind) => {
        acc[val] = aD[ind];
        return acc;
    }, {});
    return oD['yy'] + '-' + oD['mm'] + '-' + oD['dd'];
}

Date.prototype.addDay = function(days) {
    var date = new Date(this.valueOf())
    date.setDate(date.getDate() + days);
    return date;
}


function calcBusinessDays(startDate, endDate) {
    var count = 0;
    var curDate = startDate;
    if (startDate == endDate) return 1;
    let aTemp1 = startDate.split('/');
    let aTemp2 = endDate.split('/');
    let dDate1 = new Date(dConvert(startDate));
    let dDate2 = new Date(dConvert(endDate));
    let aWD = $('[name="WorkingDays"]').val().split(',');
    while (dDate1 <= dDate2) {
        var dayOfWeek = (dDate1.getDay() + 1).toString();
        var isWworkingDay = aWD.includes(dayOfWeek);
        let oD = {
            'm': dDate1.getMonth() + 1,
            'd': dDate1.getDate(),
            'y': dDate1.getFullYear(),
        };
        let tempDate = (oD.m < 9 ? "0" + oD.m : oD.m) + '/' + (oD.d < 9 ? "0" + oD.d : oD.d) + '/' + oD.y;
        if (isWworkingDay && (aHolidayDate.indexOf(tempDate) == -1))
            count++;
        dDate1 = dDate1.addDay(1);
    }
    return count;
}

请问这里出了什么问题

谢谢

javascript jquery jquery-ui
1个回答
0
投票

您似乎想在计算日期范围时包含第一个日期。如果您想这样做,您应该使用

count = 1
而不是
count = 0
。如果你不这样做,你的 while 循环将会很短。

© www.soinside.com 2019 - 2024. All rights reserved.