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

skindbeni
skindbeni (13.040 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 (38.240 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 (38.240 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 (38.240 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.040 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

Formatering af dato samt if else?

Oprettet den 1. september 2014 kl. 20.53
bolorolo giver 15 point for svar | Giv et svar »

Hvilken INDY komponent ? (billede--> MIME-format)

Oprettet den 29. august 2014 kl. 15.45
snestrup2000 giver 50 point for svar | Giv et svar »

Delphi program uden mainform

Oprettet den 28. august 2014 kl. 09.46
kennethv giver 200 point for svar | Giv et svar »






Computerworld

Teaser billede

Atea i kæmpe omstrukturering: Ny topchef indsætter ny ledelse

Interview: Efter fire måneder på posten rykker Ateas nye direktør, Morten Felding, helt rundt på det store selskab. Omstruktureringen koster kendt direktør jobbet. Se hvad Morten Feldings...

CIO

Teaser billede

It-projekterne fejler igen og igen: Forklaringen er ganske pinlig

It skal skabe mere effektive virksomheder og offentlige institutioner, men ender alt for ofte med at skabe problemer. Forklaringen bør give røde ører.

Comon

Teaser billede

Chrome-browseren kommer nu i 64-bit version: Derfor skal du opdatere

En af verdens mest populære browsere har altid haft et problem: Det fandtes kun i en 32-bit version. Men nu er Chrome 64-bit endelig kommet ud af beta og er uden tvivl en opdatering værd.

Channelworld

Teaser billede

Installers' konkurs sender 25 it-folk hjem uden løn

Et halvt år med underskud på driften og millionslagsmål med en kunde tømte kassen hos it-firmaet Installers, som nu har kastet håndklædet i ringen.

White paper

Teaser billede

Få overblik over it-ressourcerne

Med ERP for IT® fra Efecte opnår du fuld styring over it-driften, leverandører inkl. outsourcing og bliver agil i forhold til forandringer.



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