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

x7yiwoj4  于 2023-11-17  发布在  jQuery
关注(0)|答案(1)|浏览(101)

我有一个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;
}

字符串
请问这里怎么了
谢谢

q9yhzks0

q9yhzks01#

看起来你想在计算日期范围时包含第一个日期。如果你想这样做,你应该使用count = 1而不是count = 0。如果你不这样做,你的while循环将少一个。

相关问题