Given two DateTime values in Apex, how many weekdays are there between the two?
Getting the total number of days is straight forward using Date.daysBetween(). Excluding the weekends requires a bit more work.
One possible solution is to just loop through all the dates between the two values and count any that aren't Saturday or Sunday. It's a bit crude and will be expensive if the dates are far apart. It should however work through pure brute force.
public static Integer daysBetweenExcludingWeekends(Datetime startDate, Datetime endDate) {
Integer i = 0;
while (startDate < endDate) {
if (startDate.format('EEE') != 'Sat' && startDate.format('EEE') != 'Sun') {
i = i + 1;
}
startDate = startDate.addDays(1);
}
return i;
}
See also:
- Salesforce StackExchange: Days between two DateTime values excluding weekends