任何人都可以帮我解决如何将delphi中的int变量格式化为一分钟:秒??
样品: myVar:= 19;
我的标签标题应显示00:19
任何人都有意见吗?感谢
答案 0 :(得分:13)
这将避免任何超过几小时的秒值的错误。
var
secs: integer;
str: string;
begin
secs := 236;
// SecsPerDay comes from the SysUtils unit.
str := FormatDateTime('nn:ss', secs / SecsPerDay));
// If you need hours, too, just add "hh:" to the formatting string
secs := 32236;
str := FormatDateTime('hh:nn:ss', secs / SecsPerDay));
end;
答案 1 :(得分:8)
假设myVar
包含秒数:
label1.Caption := Format('%.2d:%.2d', [myVar div 60, myVar mod 60]);
答案 2 :(得分:4)
你应该像这样使用FormatDateTime method:
procedure TForm1.FormCreate(Sender: TObject);
const MyConst: Integer = 19;
begin
Caption:=FormatDateTime('nn:ss', EncodeTime(0, MyConst div 60, MyConst mod 60, 0));
end;
答案 3 :(得分:2)
扩展到Brad的答案,我把它包装成一个功能,检测时间是否超过一小时,如果是,则自动显示小时数。否则,如果不到一小时,则不会显示小时数。它还有一个可选参数,用于定义是否在小时和分钟上显示前导零,具体取决于您的偏好(即03:06:32
vs 3:6:32
)。这使它更具人性化。
function SecsToTimeStr(const Secs: Integer; const LeadingZero: Boolean = False): String;
begin
if Secs >= SecsPerHour then begin
if LeadingZero then
Result := FormatDateTime('hh:nn:ss', Secs / SecsPerDay)
else
Result := FormatDateTime('h:n:ss', Secs / SecsPerDay)
end else begin
if LeadingZero then
Result := FormatDateTime('nn:ss', Secs / SecsPerDay)
else
Result := FormatDateTime('n:ss', Secs / SecsPerDay)
end;
end;
但是,显示时间段有许多不同的可能偏好,由您自行决定。我不会在这里涵盖所有这些可能的方式。
答案 4 :(得分:1)
如果您确定只需要几分钟和几秒钟 - 快速解决方案可能是:
格式('%d:%d',[(myVar div 60),(myVar mod 60)]);
与已提议的解决方案相同......: - )