Hallo!
Ich habe ein kniffliges Problem.
Für diverse Zinsberechnungen brauche ich in Delphi eine Funktion, die mir die Differenz an Tagen zwischen 2 Datumswerten zurückgibt. Für das Jahr werden aber 360 Tage zugrunde gelegt; also jeder Monat mit 30 Tagen.
Also so was:
function AnzTage(BeginDate;EndDate:TDateTime):Integer;
Beispiel:
function AnzTage(28.02.2000;01.03.2000)=3
function AnzTage(15.02.2000;01.03.2000)=15
function AnzTage(29.01.2000;01.02.2000)=2
Hat jemand eine Idee?
P.S. Funktion entspricht Excel „Tage360“-Funktion.
Danke!
Hi Namensvetter !
Wie wär’s damit:
FUNCTION AnzTage (t1, m1, j1, t2, m2, j2: LONGINT): LONGINT;
(* t: Tageszahl, m: Monatszahl, j: Jahreszahl *)
begin
Result := t2-t1+30*(m2-m1)+360*(j2-j1)
end;
Bei Deiner Angabe
AnzTage(15.02.2000;01.03.2000)=15
ist Dir übrigens ein Fehler unterlaufen, als Soll-Ergebnis muß da „16“ hin, nicht „15“. Meine Funktion liefert für alle Deine Beispiele jedenfalls das korrekte Ergebnis. Vielleicht hilft sie Dir ja weiter.
Mit freundlcihem Gruß
Auch Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Danke!!!
Gruß Martin
Hi Martin,
um die Differenz zwischen zwei Datumswerten zu ermitteln, mußt Du sie nur voneinander subtrahieren (siehe Delphi Hilfe „TDateTime“), egal, wieviel Tage ein Jahr hat…TDateTime ist nämlich eine Zahl vom Typ Double.
Gruß Thomas