Einzelnen Beitrag anzeigen

Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

EncodeDateTime mit Werten <1?

  Alt 22. Okt 2006, 17:38
Hallo,

ich muss im Moment ein wenig mit Daten und Zeiten rumrechnen... und ich würe gerne auch mit negativen Tagen und Monaten rechnen. Habe dazu diese Funktion geschrieben:

Delphi-Quellcode:
function EncodeDateTime0Based(AYear, AMonth, ADay: Integer): TDate;
begin
  if AMonth < 0 then
  begin
    AYear := AYear + (AMonth div MonthsPerYear);
    AMonth := AMonth mod MonthsPerYear;
  end;
  if ADay < 0 then
  begin
    Dec(AMonth);
    while Abs(ADay) > DaysInAMonth(AYear,AMonth) do
    begin
      Dec(AMonth);
      Inc(ADay, DaysInAMonth(AYear, AMonth));
    end;
    ADay := DaysInAMonth(AYear, AMonth-1) + ADay;
  end;

  Result := EncodeDate(AYear+1,AMonth+1,ADay+1);
end;
z.B. wenns auf Februar hingeht (also z.B. eingabe werte 2005, 3, -5) wirft EncodeDate Exceptions, weil komische Werte generiert werden...
hat jemand bereits so eine Funktion oder kann meine korrigieren?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat