小心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