以下代码是否适用于在所有可能情况下添加工作日? 例如,如果我在“星期四”添加4天,结果应该是“星期三”。
我想在某一天之后获得第n个工作日(工作日)。
var addOneDay=function(date) {
var result = new Date(date.getTime());
result.setDate(result.getDate() + 1);
return result;
};
var addWeekDays = function(date,days) {
var result = new Date(date.getTime());
for (var i = 0; i < days; i++) {
do{
result = addOneDay(result);
}while( result.getDay()=== 6 || result.getDay()=== 0);
};
return result;
};
var date = new Date(2016,1,18);
console.log(addWeekDays(date,4));
根据ElenaDBA和Felix Kling的建议重新编写代码:
var addWeekDays = function(date,days) {
var result = new Date(date.getTime());
for (var i = 0; i < days; i++) {
result.setDate(result.getDate() + 1);
if (result.getDay()=== 6 || result.getDay()=== 0) i--;
};
return result;
};
var date = new Date(2016,1,18);
console.log(addWeekDays(date,4));
答案 0 :(得分:0)
这样的事情怎么样?
var addOneDay = function (date) {
var result = new Date(date.getTime());
result.setDate(result.getDate() + 1);
return result;
};
var addWeekDays = function (date, days) {
var result = new Date(date.getTime());
var counter = 1;
while(counter <= days) {
if (result.getDay() !== 6 && result.getDay() !== 0) {
counter = counter +1;
}
result = addOneDay(result);
};
return result;
};
var date = new Date(2016, 1, 18);
console.log(addWeekDays(date, 4));
在这种情况下,输入日期为2016年2月18日,输出为2016年2月24日,就像您想要的那样