Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#22

AW: Datumsdifferenz berechnen?

  Alt 21. Jan 2014, 06:09
Was ist denn, wenn ich mehr als 1 Jahr zwischen den beiden Datumsen habe?

Also ich würde das dann so machen (ungetestet):
Delphi-Quellcode:
Function IstEinSchaltjahr(jahr : Integer) : Bool;
begin
        if jahr mod 400 = 0 then Result := 1
   else if jahr mod 100 = 0 then Result := 0
   else if jahr mod 4 = 0 then Result := 1
   else Result := 0;
end;

Function TageImMonat (Monat, Jahr : Integer) : Integer;
Begin
  Case Monat of
    1,3,5,7,8,10,12 : Result := 31;
    4,6,8,10 : Result := 30;
    2 : If IstEinSchaltHahr(Jahr) then
      Result := 29
    else
      Result := 28;
   end
end;
 
Function AnzahlTage (A,B : TDatum) : Integer;
Begin
  If (A.Jahr=B.Jahr) and (A.Monat=B.Monat) then
    result := B.Tag - A.Tag;
    exit;
  end;
  L := A;
// 1. Alle Tage bis zum Monatsende...
  Result := TageImMonat(L.Monat, L.Jahr) - A.Tage;
// 2. Dann alle Monate bis zum Ferienbeginn zusammenzählen
  While (L.Jahr<>B.Jahr) and (L.Monat <> B.Monat) Do Begin
    if L.Monat=12 then begin
      L.Jahr := L.Jahr +1 ;
      L.Monat := 1;
    end
    else L.Monat := L.Monat + 1;
    Result := Result + TageImMonat(L.Monat, L.Jahr);
  end;
// 3. Zum Schluss noch die Tage vom Ferienmonat
  Result := Result + B.Tage;
End;
  Mit Zitat antworten Zitat