在date1-date2之前可以考虑使用trunc去掉date中的小数位(时间值)

解决方案 »

  1.   

    date1:=99-7-5;
    date2:=99-7-5;
    date:=date2-date1;
    showmessage(DateTostr(date));结果竟然是99-12-3什么玩意??
      

  2.   

    先用 decodeDate 把日期转化成单个年,月,日,然后在减
      

  3.   

    结果应该是99-12-30才对。因为Delphi中规定日期值为0时,应该是1899/12/30。你是短日期,格式,所以18自然看不见。
    前面人说的是正确的,日期作差就可以了。其整数部分是日期相差,小数部分是时间相差。用DecodeTime可以获得时间的具体值。DecodeDate不太适用。
      

  4.   

    我不说了吗?整数部分就是相差的天数。
    Diff := Trunc(Date1 - Date2);
      

  5.   

    不对,
     var date1,date2:TDate;
    begin
    date1:=2002-10-11;
    date2:=2001-8-8;
    ShowMessage(IntToStr(trunc(date1-date2)));
    结果为-4,显然不对!
    为什么?
      

  6.   

    只是想要天数很简单啊,TDateTime是一个浮点数,整数部份就是天数指从12/30/1899开始数的天数,Date1-Date2得出的值一定是一个浮点数,取出其中的整数部份就行啦。
      

  7.   

    肯定不行的,请诸位试试:var date1,date2:TDate;
    begin
    date1:=2002-10-11;
    date2:=2001-8-8;
    ShowMessage(IntToStr(trunc(date1-date2)));
    结果为-4,显然不对!
    为什么?刚才我加了又10分,再加!!
      

  8.   

      Result := DateTimeToTimeStamp(Date1).Date - DateTimeToTimeStamp(Date2).Date
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    date1,date2:TDate;
    begin
    date1:=EncodeDate(2002,10,11);
    date2:=EncodeDate(2001,8,8);
    ShowMessage(IntToStr(trunc(date1-date2)));
    end;答案是429啊,不是-4
      

  10.   

    var
      D:TDate;
    begin
      D:=StrToDate('2001-7-2');
      ShowMessage(IntToStr(Trunc(D-Date)));
    end;
    以上在D5中通过,返回 -29
      

  11.   


    肯定不行的,请诸位试试:var date1,date2:TDate;
    begin
    date1:=strToDate('2002-10-11');
    date2:=strtodate('2001-8-8');
    ShowMessage(IntToStr(trunc(date1-date2)));
    结果为  ,显然不对!
    为什么?刚才我加了又10分,再加!!
      

  12.   

    谢谢各位!
    我忘了写strToDate!