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

skindbeni
skindbeni (13.595 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 (39.130 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 (39.130 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 (39.130 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 (13.595 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

Start af Iexplore og lukke den efter en pause

Oprettet den 18. december 2014 kl. 14.10
nykobingpc giver 30 point for svar | Giv et svar »

Opbygning af File of Record

Oprettet den 16. december 2014 kl. 13.14
Olescholesch giver 30 point for svar | Giv et svar »

Indy 10 - Send E-mail

Oprettet den 13. december 2014 kl. 16.27
juzas giver 60 point for svar | Giv et svar »

Seneste guides

Malwarebytes version 2.0.3.1025
Find ejeren af et vilkårligt domæne
Opret BOOTBAR USB pen ...





Computerworld

Teaser billede

På vejen hjem fra lufthavnen opdager jeg at min telefon via Bluetooth prøver at forbinde med min bil - og Bluetooth har aldrig været aktiveret på den telefon

På vejen hjem fra lufthavnen opdager jeg at min telefon via Bluetooth prøver at forbinde med min bil - og Bluetooth har aldrig været aktiveret på den telefon

CIO

Teaser billede

Skat sparer 100 millioner kroner med ny it-indkøbs-politik: Så enkelt kan det gøres

Med en spritny udbudsfabrik har Skat præsteret at spare 100 millioner kroner på it-driftsudbud. Læs her, hvordan Skat har strømlinet sine udbudsproces.

Comon

Teaser billede

Ny bærbar computer? Tag et kig på Lenovo Yoga 3 og Microsoft Surface Pro 3

Lenovo Yoga Pro 3 bærbar PC er ekstremt tynd, kommer med den helt nye Intel Core M processor og lades via USB. Men kan den slå Surface Pro 3? Se duellen her.

Channelworld

Teaser billede

Faneflugt blandt Microsofts danske partnere: Fylder hylderne med Microsoft-rivalers produkter

Massevis af danske forhandlere af Microsofts klassiske økonomisystem C5 er begyndt at fylde hylderne med produkter fra Microsofts rivaler. "Det virker som om, at Microsoft mere eller mindre...

White paper

Teaser billede

Den gode kravspecifikation

Hvad gør en kravspecifikation god? Følg de 10 trin til en bedre kravspecifikation og kravstyring og få hurtigt et højere investeringsafkast.



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