Идея состоит в том, чтобы исключить нерабочие дни.Вот базовый пример:
// define non working days of week
var nonWorkingDaysOfWeek = new List<DayOfWeek>
{
DayOfWeek.Sunday // hard-coded for example
};
// define specific non-working dates
var holidays = new List<DateTime>
{
new DateTime(2010, 12, 25) // hard-coded for example
};
// tally the working days
var currentYear = 2010; // hard-coded for example
var currentMonth = 12; // hard-coded for example
var daysInCurrentMonth = DateTime.DaysInMonth(currentYear, currentMonth);
var numberOfWorkingDays = 0;
for (var day = 1; day <= daysInCurrentMonth; day++)
{
var date = new DateTime(currentYear, currentMonth, day);
if (!nonWorkingDaysOfWeek.Contains(date.DayOfWeek) && !holidays.Contains(date))
{
numberOfWorkingDays++;
}
}