Her er en procedure der beregner arbejdsdage, der er muligvis nogle dage der ikke normalt er arbejdsdage men som alligevel tælles med, men dem kan du så selv ligge ind i proceduren. Den skulle regne rigtig mht. helligdage fra nu af og til the end of days. Husk DateUtils i din uses.
--------------------
function AntalArbejdsdage(Fra, Til : TDate) : integer;
function GetPaaskeDag(AYear : Integer) : TDateTime; var a,b,c,e,f,g, h,i,k,l,o,q : integer; begin a:=(AYear mod 19); b:=(AYear div 100); c:=(AYear mod 100); o:=(b div 4); e:=(b mod 4); f:=((b+8) div 25); g:=((b-f+1) div 3); h:=((19*a+b-o-g+15) mod 30); i:=(c div 4); k:=(c mod 4); l:=((32+2*e+2*i-h-k) mod 7); q:=((a+11*h+22*1) div 451); Result:=EncodeDate(AYear,((h+l-7*q+114) div 31),(((h+l-7*q+114) mod 31)+1)); end;
function IsHelligDag(Dato : TDate) : boolean; var dd,mm,yy : word; PaaskeDag : TDate; begin Result:=true; if DayOfTheWeek(Dato)=7 then //Søndage exit;
if (dd=1) and (mm=1) then // Nytårsdag (1/1) exit;
if (dd=25) and (mm=12) then // Julen (25/12) + (26/12) exit;
if (dd=26) and (mm=12) then // Julen (25/12) + (26/12) exit;
if (PaaskeDag-3=Dato) then // Påskedag-3 Skærtorsdag exit; if (PaaskeDag-2=Dato) then // Påskedag-2 Langfredag exit; if (PaaskeDag=Dato) then // Påskedag exit; if (PaaskeDag+1=Dato) then // Påskedag+1 2. Påskedag exit; if (PaaskeDag+26=Dato) then // Store bededag : Påskedag+26 exit; if (PaaskeDag+39=Dato) then // Kristi himmelfart : Påskedag+39 exit; if (PaaskeDag+49=Dato) then // Pinsen : Påskedag+49 exit; if (PaaskeDag+50=Dato) then // 2. Pinsedag : Påskedag+50 exit; Result:=false; end;
begin Result:=0; while Fra<=Til do begin if (DayOfTheWeek(Fra)<6) and (not IsHelligDag(Fra)) then inc(Result); Fra:=Fra+1; end; end;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.