You can use the function Date setDate(in conjunction with getDate) to add days to a date, i.e.
var myDate = new Date();
myDate.setDate(myDate.getDate() + 3);
Therefore, by calculating the number of days off in the period of working days, you can add it and the required number of working days to the start date to get the end date.
, , -
function addWorkDays(startDate, days) {
if(isNaN(days)) {
console.log("Value provided for \"days\" was not a number");
return
}
if(!(startDate instanceof Date)) {
console.log("Value provided for \"startDate\" was not a Date object");
return
}
var dow = startDate.getDay();
var daysToAdd = parseInt(days);
if (dow == 0)
daysToAdd++;
if (dow + daysToAdd >= 6) {
var remainingWorkDays = daysToAdd - (5 - dow);
daysToAdd += 2;
if (remainingWorkDays > 5) {
daysToAdd += 2 * Math.floor(remainingWorkDays / 5);
if (remainingWorkDays % 5 == 0)
daysToAdd -= 2;
}
}
startDate.setDate(startDate.getDate() + daysToAdd);
return startDate;
}
var today = new Date(2016, 10, 22);
today = addWorkDays(today, 5);
Date -
Date.prototype.addWorkDays = function (days) {
if(isNaN(days)) {
console.log("Value provided for \"days\" was not a number");
return
}
var dow = this.getDay();
var daysToAdd = parseInt(days);
if (dow == 0) {
daysToAdd++;
}
if (dow + daysToAdd >= 6) {
var remainingWorkDays = daysToAdd - (5 - dow);
daysToAdd += 2;
if (remainingWorkDays > 5) {
daysToAdd += 2 * Math.floor(remainingWorkDays / 5);
if (remainingWorkDays % 5 == 0)
daysToAdd -= 2;
}
}
this.setDate(this.getDate() + daysToAdd);
};
var today = new Date(2016, 10, 22)
today.addWorkDays(5);