incmonth函数碰到2009-02-28!解决思路

incmonth函数碰到2009-02-28!
把时间调到2009-02-28然后执行
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);
VAR T:  TDateTime;
S:STRING;
begin
T:=incMonth(NOW(),1);
S:=DATETOSTR(T);
end;


发现S='2009-03-28',而不是我要的2009-03-31,怎么解决?其他日期好像没有问题,就这个日期有问题![color=#FF0000][/color]

------解决方案--------------------
Delphi(Pascal) code

procedure TForm1.Button1Click(Sender: TObject);
VAR
  T:  TDateTime;
  S:STRING;
begin
  T:=incMonth(NOW(),1);
  if (MonthOfTheYear(now)=2) and (dayoftheMonth(now)=28) then
    T:= incDay(T,3);
  S:=DATETOSTR(T);
end;

------解决方案--------------------
1,2楼正解

VAR 
T: TDateTime; 
S:STRING; 
begin 
T:=incMonth(NOW(),1); 
if (MonthOfTheYear(now)=2) and (dayoftheMonth(now)=28) then //判断是2月并且是28天,如果是29天的话同样这样判断,下面的T:=incDay(T,2)
T:= incDay(T,3); 
S:=DATETOSTR(T); 
end; 

------解决方案--------------------
Delphi(Pascal) code
var
  dt: TDateTime;
begin
  dt := RecodeDate(dt,2009,2,28);
  dt := IncMonth(dt);
  [color=#FF0000]dt := EndOfTheMonth(dt);[/color]
  ShowMessage(DateToStr(dt));
end;

------解决方案--------------------
var
dt: TDateTime;
begin
dt := RecodeDate(dt,2009,2,28);
dt := IncMonth(dt);
dt := EndOfTheMonth(dt);
ShowMessage(DateToStr(dt));
end;