Date.workingDaysFrom(fromDate) calculates the number of working days between 2 Date objects (excluding weekends; Sat and Sun). The method will return “-1” if the fromDate is an invalid Date object or is later than the compared Date.
Do take note that this method does not take public holidays into consideration and each date is consider as a full day.
Date.prototype.workingDaysFrom=function(fromDate){
// ensure that the argument is a valid and past date
if(!fromDate||isNaN(fromDate)||this<fromDate){return -1;}
// clone date to avoid messing up original date and time
var frD=new Date(fromDate.getTime()),
toD=new Date(this.getTime()),
numOfWorkingDays=1;
// reset time portion
frD.setHours(0,0,0,0);
toD.setHours(0,0,0,0);
while(frD<toD){
frD.setDate(frD.getDate()+1);
var day=frD.getDay();
if(day!=0&&day!=6){numOfWorkingDays++;}
}
return numOfWorkingDays;
};
Examples
Comparing 8-Jul-2015 (Wed) to 13-Jul-2015 (Mon)
var startDate = new Date("8/8/2015");
var endDate = new Date("13/8/2015");
endDate.workingDaysFrom(startDate); // returns 4
Comparing same date, 8-Jul-2015 (Wed)
var startDate = new Date("8/8/2015");
var endDate = new Date("8/8/2015");
endDate.workingDaysFrom(startDate); // returns 1