有人在用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)哪们人兄给指点一下呀
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)哪们人兄给指点一下呀
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货