我有一个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;
}
字符串
请问这里怎么了
谢谢
1条答案
按热度按时间q9yhzks01#
看起来你想在计算日期范围时包含第一个日期。如果你想这样做,你应该使用
count = 1
而不是count = 0
。如果你不这样做,你的while循环将少一个。