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

skindbeni
skindbeni (15.685 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 (41.570 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 (41.570 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 (41.570 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 (15.685 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

Læse en værdi fra en DBGrid (syntaksen for at læse en...

Oprettet den 13. februar 2016 kl. 12.40
snestrup2000 giver 30 point for svar | Giv et svar »

Spøgsmål omkring timer?

Oprettet den 27. december 2015 kl. 14.17
juzas giver 100 point for svar | Giv et svar »

Delphi 7 tjek internet forbindelse

Oprettet den 25. december 2015 kl. 11.20
juzas giver 30 point for svar | Giv et svar »

Seneste guides

Luk en tråd
Defraggler og din SSD.
Must-know genvejstaster til WordPress
Slettet





Computerworld

Teaser billede

"Da jeg afleverer tingene, vil de ikke betale. Men gudskelov har databasen et master-password, som jeg kender"

"Da jeg afleverer tingene, vil de ikke betale. Men gudskelov har databasen et master-password, som jeg kender"

CIO

Teaser billede

Her kan den danske stat lære noget: Sådan skifter Nordea it-platform til 7,5 milliarder kroner

Efter flere års tilløb er Nordea godt i gang med at udskifte hele sin it-infrastruktur. Læs her, hvordan projektet til mere end syv milliarder kroner minder om statens it-udfordringer, og hvordan...

Comon

Teaser billede

Xbox ramt af syv timer langt nedbrud: Så fik kendt musiker nok

Frustrationer over gårsdagens lange nedbrud på Xbox-netværket har fået gangsterrapperen Snoop Dogg til at gå amok over for Microsoft og selskabets stifter Bill Gates. Se videoen her.

Channelworld

Teaser billede

Her er de mulige - og mest sandsynlige - købere af Fona

Fona skal inden 25. februar finde en villig investor, som helt eller delvis vil overtage den kriseramte butikskæde. Alternativet er en konkurs. Her har du en oversigt over de mulige købere af...

White paper

Teaser billede

Støt produktiviteten med virtuelt samarbejde

Virtuelle samarbejdsløsninger kan være med til at øge produktivitet og samarbejde internt i virksomheden og eksternt med kunder og samarbejdspartnere. Bliv klogere på collaboration i dette...



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