2016-11-28 33 views
0

我想清理我的計時器爲我的應用程序,但即時通訊有困難讓它做我想做的事情。格式化時間刪除不必要的00從計時器

有誰知道如何格式H:M:S並刪除00的?

例子的時候可以這樣開始:12:34:56(HH:MM:SS)

但是一旦時間達到讓說○時34分56秒,去除剩餘的00年代, 我有點擔心表演,這就是爲什麼我在這裏找到更有效的方式來格式化時間,因爲這將被稱爲很多。

String.format("%02d:%02d", m, s).replaceAll("00:","");是明智的選擇嗎?

謝謝。

+2

我認爲努力去除領先的'00'可能比僅僅使用API​​更加浪費。更不用說了,它會讓您的時間數據表示不一致,較小的值只有4位(2?)而不是6位。 –

+3

'replaceAll(「00:」,「」)'不是一個好選擇,請考慮'11: 00:21 => 11:21'得到錯誤的時間。 –

+1

您可以將日期與01:00:00進行比較,然後根據結果'hh:mm:ss'或'mm:ss'格式化。 –

回答

2

我想你可以通過只檢查前兩個字符可以忽略更快:

if (timeString.charAt(0) == '0' && timeString.charAt(1) == '0') 
    timeString = timeString.substring(3); 

我並不認爲這是偉大的代碼,但2個字符的檢查可能會比一個更大的字符串搜索速度更快。雖然不是太多,所以我懷疑這是值得的。

(由基於註釋的修復,改變== '1'== '0'

+0

顯然我不能爲你編輯單個字符,但'=='1''應該說'=='0'' –

+0

修正了它的答案。謝謝。 –

2

使用正則表達式,你可以刪除第一節'00:使用」(這只是在刪除小時部分一個HH:MM :: SS時間格式)

String.format("%02d:%02d", m, s).replaceAll("^00:",""); 

^是標記線

1

你的開頭的字符實際上已經回答了你自己的問題。把你的想法變成代碼吧。

你需要什麼:

如果時間不到一個小時,只顯示分鐘和秒;否則,顯示小時,分鐘和秒鐘。

您的代碼應該讀起來像口頭版本:

if (hours < 1) { 
    text = String.format("%02d:%02d", minutes, seconds); 
} else { 
    text = String.format("%02d:%02d:%02d", hours, minutes, seconds); 
} 

簡單,乾淨,快速,方便未來的程序員(包括你自己,從現在開始的一年)瞭解。

相關問題