Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save mouadziani/703bec9e9f1301b6724945ea21fa0197 to your computer and use it in GitHub Desktop.

Select an option

Save mouadziani/703bec9e9f1301b6724945ea21fa0197 to your computer and use it in GitHub Desktop.
Calculates business days between two dates using moment.js
var moment = require('moment');
function calculateBusinessDays(firstDate, secondDate){
//Initiallize variables
var day1 = moment(firstDate);
var day2 = moment(secondDate);
var adjust = 0;
if((day1.dayOfYear() === day2.dayOfYear()) && (day1.year() === day2.year())){
return 0;
}
//Check if second date is before first date to switch
if(day2.isBefore(day1)){
day2 = moment(firstDate);
day1 = moment(secondDate);
}
//Check if first date starts on weekends
if(day1.day() === 6) { //Saturday
//Move date to next week monday
day1.day(8);
} else if(day1.day() === 0) { //Sunday
//Move date to current week monday
day1.day(1);
}
//Check if second date starts on weekends
if(day2.day() === 6) { //Saturday
//Move date to current week friday
day2.day(5);
} else if(day2.day() === 0) { //Sunday
//Move date to previous week friday
day2.day(-2);
}
var day1Week = day1.week();
var day2Week = day2.week();
//Check if two dates are in different week of the year
if(day1Week !== day2Week){
//Check if second date's year is different from first date's year
if (day2Week < day1Week){
day2Week += day1Week;
}
//Calculate adjust value to be substracted from difference between two dates
adjust = -2 * (day2Week - day1Week);
}
return day2.diff(day1, 'days') + adjust;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment