skindbeni Nybegynder
11. maj 2006 - 18:00 Der er 3 kommentarer og
2 løsninger

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?
kroning Nybegynder
11. maj 2006 - 18:07 #1
Hvad med helligdage skal der tages højde for dem?
kroning Nybegynder
11. maj 2006 - 18:16 #2
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.
kroning Nybegynder
12. maj 2006 - 23:33 #3
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;
skindbeni Nybegynder
14. maj 2006 - 13:26 #4
Hej Harald.

Tak for svar. Point til dig som mange tak for hjælpen.

De bedste hilsener
Michael Sørensen
kroning Nybegynder
14. maj 2006 - 17:02 #5
ok
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Computerworld
Fem luskede phishing-kneb: Disse svindelnumre hopper vi på igen og igen
Her er fem af spam-slynglernes yndlings-svindelnumre, når du skal snydes til at klikke dig ind i en online-fælde. Du kan også læse tips til, hvordan du undgår at ryge i fælderne.
CIO
Er du klar? Sådan skal Windows 10 blive en lækkerbidsken for virksomhederne
Microsoft Ignite, Atlanta: Udrulningen af Windows 10 til private forbrugere er gået over stok og sten. Nu kommer turen til erhvervslivet, som Microsoft med en række tiltag forsøger at gøre interesseret i styresystemet. Og der er ingen vej uden om.
Comon
Mange Android-brugere i problemer efter opgradering: Ender med start-loop og batteribøvl
Opgraderingen til Android 7 driller masser af Nexus-brugere, der har problemer efter opdateringen.
Channelworld
Atea sigtet i stor bestikkelsessag: Kan komme til at koste selskabet dyrt
Også Atea er sigtet af politiet i den store bestikkelsessag. Det kan komme til at koste selskabet dyrt.
White paper
Sådan følger du med den moderne forbruger
Virksomheder er nødt til at optimere deres kontaktpunkter for ikke at fremmedgøre deres mest kritiske interessenter. Læs i dette white paper hvordan