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

skindbeni
skindbeni (12.970 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 (37.940 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 (37.940 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 (37.940 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 (12.970 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

Erklæring af constant array?

Oprettet den 18. august 2014 kl. 13.50
ib-rene-cairo giver 60 point for svar | Giv et svar »

Gemme og hente en inifil på harddisken

Oprettet den 17. august 2014 kl. 13.56
anton_kruse_andersen giver 30 point for svar | Giv et svar »

Hvor er source-filerne til standardkomponenterne i Delpi...

Oprettet den 16. juli 2014 kl. 10.29
HPCISCO giver 60 point for svar | Giv et svar »

Seneste guides

Opret BOOTBAR USB pen ...
Undgå reklamerne på iPad





Computerworld

Teaser billede

Guide: Sådan laver du din egen private "Dropbox"-server med Raspberry Pi på et kvarter

Selv uden de store Linux-evner kan en nybegynder relativt nemt lave en Sync-server, som fungerer på samme måde som de kendte sky-tjenester, så længe man er væbnet med tålmodighed og gåpåmod.

CIO

Teaser billede

Imercos it-chef: Her er min vej til en bedre it-afdeling

Anders Jelsig, it-chef hos Imerco, forsøger at finde vejen til den it-afdeling, der giver mest værdi for butikskæden. Det indebærer blandt andet insourcing af bestemte opgaver.

Comon

Teaser billede

Stor guide: Her er den nødvendige software til din studie-pc

Software til din studiecomputer kan koste dig over 10.000 kroner gennem uddannelsen, men du kan også klare dig ganske gratis. Her er en guide til den nødvendige software på både Mac og pc - og til...

Channelworld

Teaser billede

Tidligere IBM-direktør skal stå i spidsen for SAP i Danmark

SAP Danmark får ny øverste chef, der kommer fra en top-stilling i IBM Danmark.

White paper

Teaser billede

Den lette vej fra legacy til SOA

Få med dette webcast fra BluePhoenix et teknisk overblik over, hvad en legacy-modernisering kan indebære, og hvad der bedst kan betale sig.



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