Oprettet tor. d. 11. maj 2006 kl. 18:00:51

skindbeni
skindbeni (14.870 point. Point ude: 470)


Antal arbejdsdage

Hej.

Excel har en funktion antal.arbejdsdage(x1,x2,0) der beregner antallet af arbejdsdage (dvs. hverdage) mellem to datoer (x1 og x2)

Findes noget tilsvarende, som man kan benytte i Delphi?

Skrevet tor. d. 11. maj 2006 kl. 18:07:31| #1

kroning
kroning (40.555 point)
www.kroning.dk
Hvad med helligdage skal der tages højde for dem?

Skrevet tor. d. 11. maj 2006 kl. 18:16:04| #2

kroning
kroning (40.555 point)
www.kroning.dk
Men ellers har jeg søgt lidt her og der og det ser ikke ud til at der findes en færdig function til det, så man må nok i gang selv.

Skrevet fre. d. 12. maj 2006 kl. 23:33:41| #3

kroning
kroning (40.555 point)
www.kroning.dk
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;

    DecodeDate(Dato,yy,mm,dd);
    PaaskeDag:=GetPaaskeDag(yy);

  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;

Skrevet søn. d. 14. maj 2006 kl. 13:26:06| #4

skindbeni
skindbeni (14.870 point)
Hej Harald.

Tak for svar. Point til dig som mange tak for hjælpen.

De bedste hilsener
Michael Sørensen

Skrevet søn. d. 14. maj 2006 kl. 17:02:13| #5


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   



Seneste spørgsmål

Lave et OCR program.

Oprettet den 4. august 2015 kl. 11.40
kennethv giver 200 point for svar | Giv et svar »

Nyt spørgsmål til PrtSc tast

Oprettet den 17. juli 2015 kl. 22.47
jisch giver 100 point for svar | Giv et svar »

PrtSc tast

Oprettet den 15. juli 2015 kl. 13.38
jisch giver 30 point for svar | Giv et svar »

Seneste guides

Fjern reklamer i Edge - Windows 10
Download/import af tabeller - IE
Manual til casio ur





Computerworld

Teaser billede

Hackere angriber hundredetusindevis af jailbreakede iPhones: 225.000 Apple-konti hacket

Mere end 225.000 Apple-konti er havnet i hænderne på it-kriminelle, der bruger de mange konti til at handle ind på de bestjålne personers regning. Læs her, hvordan du kommer ud af hackernes klør.

CIO

Teaser billede

Stor mangel: Danske virksomheder kommer snart til at mangle denne type it-folk

Danske virksomheder står på spring for at komme i gang med store projekter inden for data-analyse - ikke mindst drevet af data fra de sociale medier. Men der er et problem: Der er ikke folk nok.

Comon

Teaser billede

Derfor er Nigeria-svindlerne så snot-dumme

Har du også undret dig over, hvorfor de såkaldte Nigeria-breve så åbenlyst bærer præg af at være fake?

Channelworld

Teaser billede

Nu slipper Microsoft salget af Surface fri: 40 danske it-forhandlere står klar

To år efter lanceringen af tablet-pc'en Surface er Microsoft nu endelig klar til at slippe salget til erhvervskunder løs.

White paper

Teaser billede

Sådan gør du BYOD simpelt og sikkert

Guide til at udvælge teknologier og udvikle politikker for BYOD



Udgiver · © 2015 Computerworld A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger