var
  D1,D2:TDate;
  money:float;
我要把一个日期:
  D1:=2003-12-9
  D2:=2003-12-5
  money:=8*StrToFloat(DateToStr(D1-D2));
我要实现的是金额=8*日期间隔
但是这样实现出现了日期取出的错误。  

解决方案 »

  1.   

    你对基本数据类型的理解太差了。money:=8*(D1-D2);
      

  2.   

    TDate实际是double型。
    整数部分的差值就是天数。
      

  3.   

    在SQL数据库中很好计算天数差的
      

  4.   

    从来没用过TDate的数据,所以不大熟悉。谢谢大家的指点!
      

  5.   

    如果你把它们都定义成tdatatime的话,就可以直接减了
      

  6.   

    var
      D1,D2,D3:TDate;
      money:float;
    begin
      D3:=D1-D2;
      Money:=8* D3;
    end;
      

  7.   

    为什么borland提供那么多的函数,大家不用,偏要自己写8*(D1-D2),如果100000×(D1-D2)估计误差可以让人头痛了。去看看delphi帮助里边的DaysBetween函数。
    Returns the number of whole days between two specified TDateTime values.UnitDateUtilsCategorydatetime routinesDelphi syntax:function DaysBetween(const ANow, AThen: TDateTime): Integer;C++ syntax:extern PACKAGE int __fastcall DaysBetween(const System::TDateTime ANow, const System::
    TDateTime AThen);DescriptionCall DaysBetween to obtain the difference, in days, between two TDateTime values.DaysBetween counts only whole days. Thus, DaysBetween reports the difference between Dec 31, 1999 11:59 PM and Jan 1, 2000 11:58 PM as 0 because the difference is one minute short of an entire day.
      

  8.   

    var
      dd1,dd2 : TDate;
      i : integer;
    begin
      dd1 := StrtoDate('2003-12-9');
      dd2 := strtodate('2003-12-5');
      i := 8 * trunc(dd1)-trunc(dd2);
    end;