有人在用MinutesBetween计算两个时间之差时,返回两个时间相差的分钟数,可是这个函数是错的,有人说的是trunc的错误,于是我就改用了Round 函数如下:
function MinutesBetween(const ANow, AThen: TDateTime): Int64;
var
  mid : integer;
  mif : double;
begin  mif := MinuteSpan(ANow, AThen)+0.000001;  mid := Round(mif);  if mid>mif then dec(mid);  Result := mid;
  trunc  //Result := Trunc( MinuteSpan(ANow, AThen));
 // result :=trunc(24*60 * (abs(ANow-AThen)+0.1/24/60/60));
end;可是,所得到的数据还是不对,于是我猜想是MinuteSpan的问题:
function MinuteSpan(const ANow, AThen: TDateTime): Double;
begin
  Result := MinsPerDay * SpanOfNowAndThen(ANow, AThen);
end;function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime;
begin
  if ANow < AThen then
    Result := AThen - ANow
  else
    Result := ANow - AThen;
end; HoursPerDay   = 24;
  MinsPerHour   = 60;
  SecsPerMin    = 60;
  MSecsPerSec   = 1000;
  MinsPerDay    = HoursPerDay * MinsPerHour;
看到了,在MinuteSpan中实际是24*60*abs(ANow - AThen)哪们人兄给指点一下呀