使用时,要先USES DateUtils;

解决方案 »

  1.   

    使用时要先 USES DateUtils;
      

  2.   

    有点奇怪,
    11:11 到11:21 只有9,
    但是11:10 到其他时间就是正常的,不清楚。
    估计是由于日期的问题,好像window自己的datetime是以一个起始时间的差
    整数是对应的日期差,小数是对应的时间差,以后是怎么计算得到datetime值的
    方法就不清楚了
      

  3.   

    查一查MinutesBetween(const ANow, AThen: TDateTime)函数的原码会发现MinutesBetween的等价函数是result :=trunc(24*60 * abs(ANow-AThen))
    由于计算机处理浮点形数据有误差,24*60 * abs(t1-t2)=37.999999998取整之后就成了37了。
    要解决这个问题可以在时间差上加一个很小的一个数据,比如0.1秒,这样就能得到正确的结果了。function MyMinutesBetween(ANow, AThen:Tdatetime):integer;
    begin
    result :=trunc(24*60 * abs(ANow-AThen+0.1/24/60/60))end;
      

  4.   

    上面的函数有点问题,应该是
    function MyMinutesBetween(ANow, AThen:Tdatetime):integer;
    begin
    result :=trunc(24*60 * (abs(ANow-AThen)+0.1/24/60/60))
    end;
      

  5.   

    改为:
    t1:=StrToDateTime('1111-01-01 11:11:00');
    t2:=StrToDateTime('1111-01-01 11:49:00');
    i:=MinutesBetween(t1,t2);
    试试?