Thema: Delphi Monat abziehen

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#12

Re: Monat abziehen

  Alt 12. Jan 2005, 16:26
jo

ich hab ne kleine function dras gemacht *ggg*

mit schaltjahr und allem

Delphi-Quellcode:
function Schaltjahr(Year:Integer):Boolean;
begin
  Result:=((Year Mod 4 = 0) or (Year Mod 400 = 0))
          and not (Year Mod 100 = 0);
end;

function ChangeDate(Value:TDateTime; DayChange, MonthChange, YearChange: Integer):TDateTime;
var Temp: String;
    Mon, Year, Day:Integer;
begin
  Temp:=DateTimeToStr(Value);
  Day:=StrToInt(copy(Temp,1,2));
  Mon:=StrToInt(copy(Temp,4,2));
  Year:=StrToInt(copy(Temp,7,4));
  Day:=Day+DayChange;
  Mon:=Mon+MonthChange;
  Year:=Year+YearChange;
  if Day=0 then
    begin
    Dec(Mon);
    Case Mon of
    1,3,5,7,8,10: Day:=31;
    4,6,9,11: Day:=30;
    2:if Schaltjahr(Year)
      then Day:=29
      else Day:=28;
    end;
    end;
  if Mon=0 then
    begin
    Mon:=12;
    Dec(Year);
    end;
  Temp:=IntToStr(Day)+'.'+IntToStr(Mon)+'.'+IntToStr(Year);
  Result:=StrToDateTime(Temp)+(Value-Trunc(Value));
end;
fehler sind möglich, hab aber spontan keine gefunden

übergeben wird ein DateTime-Wert

bei den werten Value,0,2,-1 wird value um 2 moinate nach vorne und 1 jahr nach hinten versetzt und zurückgegeben

aufruf zb so

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Value: TDateTime;
begin
  Value:=DateTimePicker1.DateTime;
  Value:=ChangeDate(Value,0,-1,0);
  ShowMessage(DateTimeToStr(Value));
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat