我有一个javascript函数,当我选择像11月20日到11月22日这样的日期时,我得到的计数是2而不是3,我在这里做错了什么,我尝试调试代码,但无法弄清楚出了什么问题
是时区的原因吗
这是我的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;
}
请问这里出了什么问题
谢谢
您似乎想在计算日期范围时包含第一个日期。如果您想这样做,您应该使用
count = 1
而不是 count = 0
。如果你不这样做,你的 while 循环将会很短。