给你以下几个函数,用它们来做你要达到的效果吧,别忘了把你调用这几个函数的代码贴出来,呵呵。
//定义DyasInMonth数组常量
const
  DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//函数:判断某一年是否闰年
function IsLeapYear(AYear: Integer): Boolean;
begin
  Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
end;//函数:得到某一年某一月有多少天
function DaysOfMonth(AYear, AMonth: Integer): Integer;
begin
  Result := DaysInMonth[AMonth];
  if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }
end;//函数:改变月份
//入口参数:AYear - 当前年、AMonth - 当前月、Delta - 要向前(正数)或后退(负数)的月数
//输出参数:AYear - 改变后的年、AMonth - 改变后的月
procedure ChangeMonth(var AYear, AMonth: Integer; Delta: Integer);
var
  iYear, iMonth, iDay: Word;
  NewDate: TDateTime;
begin
  iYear := AYear;
  iMonth := AMonth;
  if Delta > 0 then iDay := DaysOfMonth(iYear, iMonth)
  else iDay := 1;
  NewDate := EncodeDate(iYear, iMonth, iDay);
  NewDate := NewDate + Delta;
  DecodeDate(NewDate, iYear, iMonth, iDay);
  AYear := iYear;
  AMonth := iMonth;
end;

解决方案 »

  1.   

    其实不用这么做的,我给你一个例子:
    procedure TForm2.Button7Click(Sender: TObject);
    var
      Date: TDate;
      TempTime: TDate;
    begin
      Date:=incMonth(Date(),6);
      TempTime:=Date-Date();
      Button7.Caption:=FloatToStr(TempTime);
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var startTime,endTime:TDatetime;
        Year,Month,Day,diff:word;
    begin
      Diff :=6;
      startTime :=Now;
      DecodeDate(startTime,Year,Month,Day);
      endTime :=EncodeDate(Year,Month+Diff,Day);
      ShowMessage(FloatToStr(DaySpan(startTime,endTime)));
      ShowMessage(FloatToStr(DaysBetween(startTime,endTime)));
    end;