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

skindbeni
skindbeni (12.365 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.475 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.475 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.475 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.365 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

Åbne et Excel, tilføje, gemme og vise resultat.

Oprettet den 26. marts 2014 kl. 14.18
kennethv giver 200 point for svar | Giv et svar »

Læse Pascal datafiler med Delphi, datatyper?

Oprettet den 16. februar 2014 kl. 19.34
pz giver 60 point for svar | Giv et svar »

Holde styr på indhold i en liste.

Oprettet den 11. februar 2014 kl. 14.25
kennethv giver 200 point for svar | Giv et svar »

Seneste guides

Malwarebytes version 2.0
Watermark et billede





Computerworld

Teaser billede

Nets advarer: Ny Java giver bøvl med NemID

Den nye version af Java frigives nu, men Nets' test viser, at der er problemer med Java-versionerne i samspil med NemID. Du skal alligevel opdatere.

CIO

Teaser billede

Sådan nedgraderer du nemt Windows 8 til Windows 7

Du kan nemt nedgradere fra Windows 8 til Windows 7. Men pas på: Vejen tilbage til Windows 8 kan være besværlig. Vi har forsøgt at ned- og opgradere begge veje. Se her, hvordan det er gået.

Comon

Teaser billede

Test: Netflix, HBO Nordic, YouBio og ViaPlay - hvem vinder?

Vi har testet Netflix, HBO Nordic, YouBio og ViaPlay, men hvilken af de fire streamingtjenester er bedst? Få dommen her.

Channelworld

Teaser billede

It-milliardær: "Jeg er ikke nogen steder, hvor jeg ikke har kontrol"

It-milliardæren Ib Kunøe har ry for at være en af it-branchens hårde negle. I dette interview fortæller han, hvordan den militære baggrund og opvæksten som søn af en sønderjysk...

White paper

Teaser billede

Offentlig it-indkøb: Hvordan?

Denne Computerworld Guide ser nærmere på offentlige indkøberes palet af muligheder for at gå hårdt til deres it-leverandører.


IT Kurser

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