时间函数 MinutesBetween 是不是有Bug? 找出原因立刻加分! ( 积分: 50 )

  • 主题发起人 主题发起人 cnh
  • 开始时间 开始时间
C

cnh

Unregistered / Unconfirmed
GUEST, unregistred user!
大家可以试验一下下面的代码。
memo1.Lines.Add('1> '+inttostr( MinutesBetween( strtodatetime('2007-5-21 18:56:00'), strtodatetime('2007-5-21 18:57:00'))));
memo1.Lines.Add('2> '+inttostr( MinutesBetween( strtodatetime('2007-5-21 18:57:00'), strtodatetime('2007-5-21 18:58:00'))));
我试验的结果是0和1,但是理论上应该一样,怎么回事??
 
TDateTime就是Double
浮点数精度有问题,在计算中会出现误差
 
很正常也是很合理的 。
 
我必须要准确的时间差值,请问各位解决办法是什么?
 
procedure TForm1.Button1Click(Sender: TObject);
var
d, t: TDateTime;
begin
d := EncodeDateTime(2007, 5, 21, 18, 56, 0, 0);
t := EncodeDateTime(2007, 5, 21, 18, 57, 1, 0);
Memo1.Lines.Add('比较'+ DateTimeToStr(D) + '和' + DateTimeToStr(T) +
'之间的分钟差别(MinutesBetween),结果是,两者相差' +
IntToStr(MinutesBetween(t, d)));

d := EncodeDateTime(2007, 5, 21, 18, 57, 0, 0);
t := EncodeDateTime(2007, 5, 21, 18, 58, 1, 0);
Memo1.Lines.Add('比较'+ DateTimeToStr(D) + '和' + DateTimeToStr(T) +
'之间的分钟差别(MinutesBetween),结果是,两者相差' +
IntToStr(MinutesBetween(t, d)));
end;
 
TDateTime就是Double
浮点数精度有问题,在计算中会出现误差
-----------------------------------
那是不是在使用 strtodatetime 以后就可能产生误差了呢?
 
是在使用 StrtoDatetime 以后就产生误差?
还是使用 MinutesBetween 以后才产生误差?
 
楼主没有看我给的代码?你的时间比较之间多加一秒就行了啊!
 
多人接受答案了。
 
后退
顶部