2017-08-29 212 views
2

我想在C#中創建一個數字時鐘。我有3個計時器對象數小時,分鐘和秒。它的格式必須是hh:mm:ss如何將字符串格式化爲hh:mm:ss?

我設法做

String hours = _hours.Value.ToString(); 
String minutes = _minutes.Value.ToString(); 
String seconds = _seconds.Value.ToString(); 

if (hours.Length == 1) 
{ 
    hours = "0" + hours; 
} 

if (minutes.Length == 1) 
{ 
    minutes = "0" + minutes; 
} 

if (seconds.Length == 1) 
{ 
    seconds = "0" + seconds; 
} 

return hours + ":" + minutes + ":" + seconds; 

它的工作原理,但我想使用的String.format做的更有效的方式。我嘗試了幾個不同的正則表達式,但都沒有成功。

string b = string.Format("{0:D2}:{1:00}:{2:d2}", hours, minutes, seconds); 

乾杯

+0

'_hours','_minutes'和'_seconds'類型是什麼? – Vikhram

+0

是一個對象類。我做了一個計數器。 –

+0

爲什麼你有「三個櫃檯對象」?你不應該。 DateTime擁有您所需要的一切。只需在您喜歡的時間間隔內用當前的DateTime更新您的視圖... – Fildor

回答

2

IMO如果你已經有了一個string型也沒用它轉換爲intDateTime只是爲了以後再字符串化它。

我會用String.PadLeft方法:

string h = hours.PadLeft(2, '0'); 
string m = minutes.PadLeft(2, '0'); 
string s = seconds.PadLeft(2, '0'); 
string result = h + ":" + m + ":" + s; 

PadLeft會讓你的字符串總是有長度至少爲(在這種情況下2)第一參數傳遞的價值,填補「空」的地方在第二個參數中傳遞的值(在這種情況下爲0)。


Check this online

+0

這個工程。謝謝 –

3

你有沒有嘗試過的字符串轉換成整型,試圖您string.Format過嗎?像下面

string.Format("{0:00}:{1:00}:{2:00}", 
       int.Parse(hours), int.Parse(minutes), int.Parse(seconds)); 

如果_hours.Value_minutes.Value_seconds.Value是數字類型的東西,那麼你可以使用下面的代碼是更有效的

string.Format("{0:00}:{1:00}:{2:00}", 
       _hours.Value, _minutes.Value, _seconds.Value); 
+0

這個工程。謝謝 –

0

您可以嘗試使用:

string b = DateTime.Now.ToString("HH:mm:ss"); 
1

你總是可以嘗試一些不同的東西:

DateTime dt = new DateTime(2000, 1, 1, hours, minutes, seconds); // just ignore year, month and day 
var x = dt.ToString("HH:mm:ss"); 
1

您可以使用可用的格式選項上ToString()方法DateTime象下面這樣:

(new DateTime(1900, 1, 1, _hours.Value, _minutes.Value, _seconds.Value)).ToString("HH:mm:ss"); 
0

如果你有一些日期變量,你可以這樣做:

string b = dateVar.ToString("HH:mm:ss"); 

如果你想解決方案正如你的例子,然後:

return string.Format("{0:00}:{1:00}:{2:00}", 
    int.Parse(hours), 
    int.Parse(minutes), 
    int.Parse(seconds) 
); 
相關問題