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
Opdater din iPhone og iPad med det samme: Apple udsender hasteopdatering
Apple har netop udsendt iOS 9.3.5, der lukker tre kritiske 0-dags-sårbarheder i iPhone og iPad.
CIO
Sådan holder du dem væk: Disse fem ting synes hackerne er de største barrierer
Hackerne er blevet rigtigt dygtige. Men især fem ting kan genere dem, hvis de forsøger at trænge ind i dine systemer, viser rundspørge blandt 250 hackere.
Comon
25.000 danskere gået i kuponsvindel-fælde på Facebook på blot seks timer: "Det spredte sig som en steppebrand"
Fakta, Netto, Aldi, Lidl, Lego og flere andre varemærker bliver lige nu udnyttet i forbindelse med kuponsvindel på Facebook, og danskerne klikker i hobetal. Læs hvad der sker, hvis du klikker.
Channelworld
Forbrugerne knuselsker denne computer: 2-i-1-maskinen viser vejen frem
Hybridmaskinerne viser vejen frem i et presset pc-marked. Den er populær blandt almindelige danskere, men mangler stadig fodfæste i firmaerne. Forventningerne er dog tårnhøje.
White paper
Intelligente forretningsprocesser
Læs her om de centrale egenskaber ved intelligente forretningsprocesser, deres fordele og hvordan du hæver dine egne forretningsprocessers IQ.