Отформатируйте переменную int в mm: ss

Может ли кто-нибудь помочь мне, как форматировать переменную int в delphi в минуту: секунды?

образец: myVar: = 19;

подпись на лейбле должна отображаться 00:19

любая идея? Спасибо

delphi,time,string-formatting,

5

Ответов: 5


8 принят

Предполагая, что myVarколичество секунд:

label1.Caption := Format('%.2d:%.2d', [myVar div 60, myVar mod 60]);

12 ов

Это позволит избежать ошибок в секундах, которые переполняются в часах.

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;

4

Вы должны использовать метод FormatDateTime следующим образом:

procedure TForm1.FormCreate(Sender: TObject);
const MyConst: Integer = 19;
begin
  Caption:=FormatDateTime('nn:ss', EncodeTime(0, MyConst div 60, MyConst mod 60, 0));
end;

2

Развернувшись на ответ Брэда, я завернул это в функцию, которая обнаруживает, что время больше часа, и автоматически показывает часы, если это так. В противном случае, если это меньше часа, часы не показывают. Он также имеет необязательный параметр, чтобы определить, показывать ли ведущий ноль в часах и минутах, в зависимости от ваших предпочтений (т. 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;

Тем не менее, существует множество различных возможных предпочтений с отображением периода времени, который вам решать. Я не буду описывать все эти возможные способы.

введите описание изображения здесь


1

Если вы уверены, что хотите только минуты и секунды - быстрое решение может быть:

Формат ('% d:% d', [(myVar div 60), (myVar mod 60)]);

Такое же решение, как уже было предложено ... :-)

Дельфы, время, строка-форматирование,
Похожие вопросы