Предполагая, что myVar
количество секунд:
label1.Caption := Format('%.2d:%.2d', [myVar div 60, myVar mod 60]);
Может ли кто-нибудь помочь мне, как форматировать переменную int в delphi в минуту: секунды?
образец: myVar: = 19;
подпись на лейбле должна отображаться 00:19
любая идея? Спасибо
delphi,time,string-formatting,
Это позволит избежать ошибок в секундах, которые переполняются в часах.
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;
Развернувшись на ответ Брэда, я завернул это в функцию, которая обнаруживает, что время больше часа, и автоматически показывает часы, если это так. В противном случае, если это меньше часа, часы не показывают. Он также имеет необязательный параметр, чтобы определить, показывать ли ведущий ноль в часах и минутах, в зависимости от ваших предпочтений (т. 03:06:32
Е. Против 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;
Тем не менее, существует множество различных возможных предпочтений с отображением периода времени, который вам решать. Я не буду описывать все эти возможные способы.