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;