A munkanapok számát a WorkDays, az egyéb napok számát (szabad és munkaszüneti napok) a Holidays függvényekkel kérdezhetjük le.
private int WorkDays(int year, int month)
private int Holidays(int year, int month)
Ahhoz, hogy el tudjuk dönteni egy napról, hogy munkaszüneti nap-e, létre kell hoznunk egy újabb függvényt.
private bool IsHoliday(int month, int day)
Az ISHoliday függvény visszatérési értéke igaz, ha a paraméterekben megadott nap ünnepnap, munkanap esetén hamis.
A munkaszüneti napokat fel kell jegyeznünk. Ezt két tömb segítségével tesszük meg.
int[] months = {1,3,5,8,10,11,12,12};
int[] days = {1,15,1,20,23,1,25,26};
A months a hónapokat, a days a hónapokhoz tartozó napokat tárolja, azonos indexű helyen.
A WorkDays és Holidays függvények hasonló módon működnek, csak a lekérdezési feltételük más.
GregorianCalendar c = new GregorianCalendar();
int d=0;
for (int i=1; i <= c.GetDaysInMonth(year, month); i++)
{
bool weekend = false;
DateTime dt = new DateTime(year,month,i);
if (c.GetDayOfWeek(dt) == DayOfWeek.Sunday || c.GetDayOfWeek(dt) == DayOfWeek.Saturday)
weekend = true;
if (IsHoliday(month, i) == false && weekend == false)
d++;
}
Az aktuális nap meghatározásához a GregorianCalendar osztályt használjuk
Munkanapok esetén az olyan napokat kell megszámolnunk, amelyek nem esnek hétvégére és nem is ünnepnapok.
Amikor a szabadnapokat vizsgáljuk, akkor az előbbi feltételnek éppen az ellenkezőjére van szükség. A hétvégéket és az ünnepnapokat kell összeszámolnunk.