2012-02-07 58 views
3

任何人都可以幫助我如何在delphi中將int變量格式化爲一分鐘:秒?將int變量格式化爲mm:ss

樣本: myVar:= 19;

我的標籤標題應顯示00:19

任何想法的人?感謝

+0

沒有提供真的,所有我需要的是將它與格式「MM:SS」這種格式 – Tony 2012-02-07 11:03:15

回答

7

假設myVar包含的秒數:

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

它說數組類型必需 – Tony 2012-02-07 11:10:14

+0

有在我的例子格式參數之間缺少逗號,現在固定。哦,看起來像SimaWB打我解決它,謝謝。 – ain 2012-02-07 11:13:11

+0

感謝你,,,你剛剛錯過了,所以這就是爲什麼它顯示陣列所需的錯誤發生,謝謝 – Tony 2012-02-07 11:13:14

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; 
+0

感謝這些。 – Tony 2012-02-07 11:15:05

+0

如果MyConst> 60,會出現'EConvertError'。更好地使用它:'Caption:= FormatDateTime('nn:ss',IncSecond(0,myVar));'(包括'DateUtil') – kobik 2012-02-07 11:17:56

+0

@kobik我已經在我的代碼片段 – 2012-02-07 11:18:24

1

如果您確信您只想分鐘和秒 - 一個快速的解決方案可能是格式('%d:%d',[(myVar div 60),(myVar mod 60)]);

相同的溶液已經提出了... :-)

+0

謝謝,除以更容易。生病做 – Tony 2012-02-07 11:19:18

10

這將避免任何錯誤行爲溢出到小時秒值。

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

+1此解決方案很容易理解,並將與任何輸入值一起使用。這也是最靈活的一個。 – 2012-02-07 15:56:11

0

擴大到布拉德的答案,我裹成檢測,如果時間超過一個小時,並自動顯示小時,如果這樣的功能這一點。否則,如果不到一個小時,則不顯示小時數。它還有一個可選參數,用於根據您的偏好定義是否在小時和分鐘上顯示前導零(即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; 

不過,也有與顯示時間,這是由你來決定許多不同的可能偏好。我不會在這裏介紹所有可能的方法。

enter image description here