2016-09-30 83 views
0

我的應用程序中有一個NSTimer對象,以秒爲單位計算已用時間。Swift:根據秒數格式化時間字符串

我想在我的應用程序的界面中格式化一個UILabel,這種方式與衆所周知的標準相匹配。

00:01 - 1秒

01:00 - 60秒

1點50分五十秒 - 6650秒

不知如何做到這一點,你知道任何豆莢/庫創建這樣的字符串基於整數秒的?

顯然我可以自己來一個複雜的方法,但由於建議不要重新發明輪子,所以我更願意使用一些隨時可用的解決方案。

我沒有找到基業庫相關的任何東西,也沒有在HealthKit

你有什麼建議,如何把它做?如果你說「自己去寫」 - 沒關係。但我想確保我不會錯過任何簡單,直接的解決方案。

在此先感謝

+0

@EricAya謝謝!你能舉一個例子來說明我的情況嗎?非常感謝 – DCDC

回答

3

(NS)DateComponentsFormatter能做到這一點:

func timeStringFor(seconds : Int) -> String 
{ 
    let formatter = DateComponentsFormatter() 
    formatter.allowedUnits = [.second, .minute, .hour] 
    formatter.zeroFormattingBehavior = .pad 
    let output = formatter.string(from: TimeInterval(seconds))! 
    return seconds < 3600 ? output.substring(from: output.range(of: ":")!.upperBound) : output 
} 

print(timeStringFor(seconds:1)) // 00:01 
print(timeStringFor(seconds:60)) // 01:00 
print(timeStringFor(seconds:6650)) // 1:50:50 
+0

這是一個非常有趣的方式,但很難拿出:) – DCDC

0

想通了基於this答案很簡單!

func createTimeString(seconds: Int)->String 
{ 
    var h:Int = seconds/3600 
    var m:Int = (seconds/60) % 60 
    var s:Int = seconds % 60 
    let a = String(format: "%u:%02u:%02u", h,m,s) 
    return a 

}