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

skindbeni
skindbeni (16.185 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.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 (41.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 (41.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 (16.185 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

Migrering af D-7 til Windows 8.1

Oprettet den 23. april 2016 kl. 18.11
snestrup2000 giver 30 point for svar | Giv et svar »

Microsoft WMI - Delphi 7

Oprettet den 20. april 2016 kl. 12.42
snestrup2000 giver 30 point for svar | Giv et svar »

Finde navne på en (hard)disk

Oprettet den 19. april 2016 kl. 11.19
ossys giver 30 point for svar | Giv et svar »






Computerworld

Teaser billede

Vi kørte med i en patruljevogn med nummerpladegenkendelse: Efter tre minutter blev den første bil stoppet

Reportage: Med nummerpladegenkendelse kan politiet holde øje med alt fra forsikringssvindlere til terrormistænkte. Vi tog med på en prøvetur i en patruljevogn, og det blev en ganske...

CIO

Teaser billede

Sådan fik Jonny Vad reduceret it-nedetiden fra 37.000 timer til næsten nul på et enkelt år

Ved at overvåge it-leverandørernes præstationer røg antallet af spildte arbejdstimer ned fra 37.000 til ganske få timer på et enkelt år. "Det er ganske enkelt og uhyre effektivt,"...

Comon

Teaser billede

Stortest af antivirusprogrammer: Microsofts sikkerhedsprogram havner helt i bunden

Microsoft havner helt i bunden af denne antivirustest. I den modsatte ende af skalaen klarer en russisk produceret sikkerhedspakke sig bedst. Læs en sammenlignende test af 19 antivirusprogrammer her.

Channelworld

Teaser billede

Microsoft skruer gevaldigt op for dansk udviklingscenter: Hyrer udviklere i bundter

Microsoft ansætter op mod 50 nye udviklere i selskabets største investering på dansk jord siden opkøbet af Navision i 2002.

White paper

Teaser billede

Insight Magasin: Om it - For ledere

Man må forstå it, for at forstå mulighederne - Download dette magasin og få overblik og indblik.



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