【发布时间】:2015-01-11 21:07:28
【问题描述】:
procedure TForm1.TimerSWTimer(Sender: TObject);
var
Hour, Min, Sec, MSec: word;
begin
ElapsedTime := Time - StartTime + Totaltime ;
DecodeTime(elapsedtime, Hour, Min, Sec, MSec);
LabelSW.Text := IntToStr(Hour) + ':'+ IntToStr(Min) + ':'+ IntToStr(Sec) + ':' + IntToStr(Msec);
end;
这是我试图在我的应用程序中实现的秒表代码,主要问题是标签上显示的时间格式是0:0:0:0,我希望它是00:00:00:000 小时、分钟, 秒和毫秒。我尝试了很多我在网上找到的东西和代码,但没有一个对我有帮助。
当我启动秒表时,时间是这样的0:0:0:1,而不是0:0:0:10,0:0:0:100,整整一秒毫秒后转到小数点后 1(1 而不是 001)。小时、分钟和秒都是一样的,它们以小数点后 1 位显示,直到达到 10(9 而不是 09)..
我试过了:
-
添加前导零函数
用法:
AddLeadingZeroes(2005, 10) ;将产生一个 '0000002005' 字符串值。
-
仅时间 - 带有前导零的数值
ShowMessage('hh:nn:ss.zzz = '+FormatDateTime('hh:nn:ss.zzz', myDate));
如果哪位好心人能帮上忙,我将不胜感激。
干杯。
【问题讨论】:
-
labelSW.Text := Format('%2.2u:%2.2u:%2.2u:%3.3u',[Hour,Min,Sec,MSec]);见docwiki.embarcadero.com/Libraries/en/System.SysUtils.Format
-
@SirRufo 不好意思,我不太适应这个,网上找了这个例子来实现,我不知道怎么用Tstopwatch atm,没试过tbh。
-
@TLama,我同意
TStopWatch是一个很好的(首选)测量时间的实用程序。但是使用隐式 TTimeSpan 类运算符格式化输出并没有给出想要的结果。如果毫秒为零,则从字符串中省略该部分,否则给出 7 位数字,例如00:00:00.0000137。 -
@TLama,我添加了一个使用
TStopWatch的示例和另一种格式化输出的方法。
标签: delphi time format delphi-xe5 stopwatch