我想请问一下在delphi里面,如何对两个日期型数据进行比较,我在一个程序里如下写
var
 ADatetime,BDatetime,CDatetime: tdatetime;
begin
 Adatetime := now;
 Bdatetime := strtodate('2004-5-15');
 CDatetime := Adatetime - BDatetime;
 showmessage(datetostr(CDatetime));
end;
结果显示的是 1899-12-30 怎么会出错啊?

解决方案 »

  1.   

    因为DateTime的起点日期就是1899-12-30
      

  2.   

    Tdatetime,就是一个double类型的数据。用整数部分代表距离1899年12月30日的天数。小数部分代表离0点的时间。
      

  3.   

    您用两个数相减整数部分为0所以所得数换成Tdatetime格式就是1899年12月30日,小数部分应当为当前时间
      

  4.   

    你应该用
    function DaysBetween(const ANow, AThen: TDateTime): Integer;
    判断,类似的还有
    yearsBetween,MonthsBetween等等,自己去看看帮助。
      

  5.   

    uses
    Math;var
     ADatetime,BDatetime,CDatetime: tdatetime;
    begin
     Adatetime := now;
     Bdatetime := strtodate('2004-5-15');
     CDatetime := Trunc(Adatetime) - Trunc(BDatetime);
     showmessage(datetostr(CDatetime));
    end;
      

  6.   

    uses
    Math;var
     ADatetime,BDatetime,CDatetime: tdatetime;
    begin
     Adatetime := now;
     Bdatetime := strtodate('2004-5-15');
     //CDatetime := Trunc(Adatetime) - Trunc(BDatetime);
     //showmessage(datetostr(CDatetime));
    showmessage(IntToStr(Trunc(Adatetime) - Trunc(BDatetime)));
    end;
      

  7.   

    实际上你如果判断相隔日期的话直接把运算结果作为double类型数据取整就行了。而不用再转回Tdatetime。
      

  8.   

    直接用if Date1 > Date2 then ..判断就可以了比出大小了;那样相减它只能得到天数的整数,然后转化此整数为标准时间,为0则是起点日期1899-12-30,其它数值就是相应转换了……
      

  9.   

    uses DateUtilsfunction DaysBetween(const ANow, AThen: TDateTime): Integer;procedure TForm1.Button3Click(Sender: TObject);
    begin
        showmessage(inttostr(DaysBetween(strtodate('2004/4/4'), now())));
    end;
      

  10.   

    多谢各位的指导,现在我终于明白到底该怎么处理了,本来我就怀疑是其始时间的问题,没想到tdatetime本来是double型的数据的。哈,谢谢谢谢