DecodeDate(Date1,year1,month1,day1);
DecodeDate(Date2,year2,month2,day2);
year1-year2=年份差;
month1-month2=月份差;
date1-date2=天数
procedure TForm1.Button1Click(Sender: TObject);
var
  dt1,dt2: TDateTime;
  md,yd: Integer;  //md月份差,yd年份差
begin
  md := 0;
  dt1 := StrToDateTime('2002-05-31');
  dt2 := StrToDateTime('2000-03-01');
  while FormatDateTime('yyyy-mm',dt1)>FormatDateTime('yyyy-mm',dt2) do
  begin
    Inc(md);
    dt2 := IncMonth(dt2,1);
  end;
  yd := md div 12;
  ShowMessage(IntToStr(md));
  ShowMessage(IntToStr(yd));
end;http://www.csdn.net/expert/topic/768/768338.xml?temp=.9298822这个你打开看看

解决方案 »

  1.   

    datetime是Double型的变量
    0表示12/30/1899 12:00 am
    2.75表示1/1/1900 6:00 pm
    自己算吧,整数表示日,小数表示该时间在一天中的比例。
      

  2.   

    vard1,d2:tdate; begin d1:=strtodate('2002-01-01'); 
     
    d2:=strtodate('2001-01-01'); showmessage(inttostr(round(int(d1-d2))));
     
    end;
      

  3.   

    还有一种方法:
    days  :=  DaysBetween(date2,  date1) 
    不过记得在uses部分加上DateUtils~~~呵呵
      

  4.   

    你还可以
    把两个datatime格式化成"99999....."型的两个double
    相减再格式化成你想要得类型。
      

  5.   

    你还可以
    把两个datatime格式化成"99999....."型的两个double
    相减再格式化成你想要得类型。
      

  6.   

    你还可以
    把两个datatime格式化成"99999....."型的两个double
    相减再格式化成你想要得类型。