我正在使用代码如何显示完成百分比、经过时间和估计的时间进度?
我想用"秒"、"分钟"和"小时"代替数字,也就是说,我想显示:"1 分 37 秒",而不是"0:01:37"。可能吗?
只需将提供给Format
的格式字符串更改为您想要显示的任何内容即可。
function TicksToStr(Value: DWORD): string;
var
I: DWORD;
Hours, Minutes, Seconds: Integer;
begin
I := Value div 1000;
Seconds := I mod 60;
I := I div 60;
Minutes := I mod 60;
I := I div 60;
Hours := I mod 24;
Result := Format('%.2d hours, %.2d minutes, %.2d seconds', [Hours, Minutes, Seconds]);
end;
跳过零并处理复数的更智能的实现:
procedure AddTime(var S: string; Count: Integer; L: string);
begin
if Count > 0 then
begin
if S <> '' then
begin
S := S + ' ';
end;
if Count > 1 then L := L + 's';
S := S + Format('%d %s', [Count, L]);
end;
end;
function TicksToStr(Value: DWORD): string;
var
I: DWORD;
Hours, Minutes, Seconds: Integer;
begin
I := Value div 1000;
Seconds := I mod 60;
I := I div 60;
Minutes := I mod 60;
I := I div 60;
Hours := I mod 24;
AddTime(Result, Hours, 'hour');
AddTime(Result, Minutes, 'minute');
AddTime(Result, Seconds, 'second');
if Result = '' then Result := '-'; { no time }
end;