Необходимо ввести понятие рабочий календарь, причем от страны к стране и даже от предприятия к предприятию он будет совершенно разным, так как нет предопределенного правила по формированию такого календаря.
Берем даты - считаем рабочие дни в соответствии с выбранным календарем.
Если имеется в виду, что хотелось бы считать все будничные дни рабочими, то считаем количество дней между датами
C++ (Qt)
QDate first_date = ...;
QDate last_date = ...;
int day_count = first_date.daysTo( last_date );
int first_day_of_week = first_date.dayOfWeek();
int last_day_of_week = last_date.dayOfWeek();
int first_work_day_of_week = first_day_of_week > Qt::Friday ? first_day_of_week : Qt::Friday;
int last_work_day_of_week = last_day_of_week < Qt::Saturday ? last_day_of_week : Qt::Friday;
int work_day_of weak = last_work_day_of_week > first_work_day_of_week
? last_work_day_of_week - first_work_day_of_week
: last_work_day_of_week - first_work_day_of_week +7;
int full_weak_count = day_count / 7;
int work_day_count = full_weak_count * 5 + work_day_of weak;
Код на корректность не проверял, но что-то типа этого.