红鱼儿

小心SecondsBetween有坑

看下面的代码,求两个时间间隔的秒数:

procedure TForm2.FormCreate(Sender: TObject);
begin
  d1:=Now;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
var
  i:Integer;
  s:string;
  s1,s2:string;
begin
//
  d2:=Now;
  i:=SecondsBetween(d2,d1);
  // i:= Round(MilliSecondsBetween(d2, d1)/1000);
  s1:=FormatDateTime('hh:mm:ss',d1);
  s2:=FormatDateTime('hh:mm:ss',d2);
  Memo1.Lines.Add(Format('%s-%s=%d',[s2,s1,i]));

end;

这是运行结果:

 应该是1、2、3、4...

改成下面这样,出坑:

procedure TForm2.FormCreate(Sender: TObject);
begin
  d1:=Now;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
var
  i:Integer;
  s:string;
  s1,s2:string;
begin

  d2:=Now;
  //i:=SecondsBetween(d2,d1);
  i:= Round(MilliSecondsBetween(d2, d1)/1000);
  s1:=FormatDateTime('hh:mm:ss',d1);
  s2:=FormatDateTime('hh:mm:ss',d2);
  Memo1.Lines.Add(Format('%s-%s=%d',[s2,s1,i]));

end;

运行结果正常了!

 开发环境: Delphi 10.4.2

posted on 2021-03-17 10:32  红鱼儿  阅读(546)  评论(0编辑  收藏  举报