2015-12-17 83 views
-1

我正在創建一個倒數計時器,顯示小時:分鐘:秒。如何格式化數字以便始終有兩位數字?

我的作品不過,功能,如果該數字小於10返回值1位(前2:3:15)

我如何格式化我的功能,以始終兩位數字?

我正在尋找像一個結果:2時03分15秒

func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) { 
     return (seconds/3600, (seconds % 3600)/60, (seconds % 3600) % 60) 
    } 
+1

謝謝您發現解決方案 – SNos

+0

使用'「%02d:%02d:%02d」'作爲格式化程序。 – holex

回答

0

或者使用DateComponentsFormatter

lazy var dateComponentsFormatter: DateComponentsFormatter = { 
    let formatter = DateComponentsFormatter() 
    formatter.zeroFormattingBehavior = .pad 
    formatter.allowedUnits = [.hour, .minute, .second] 
    return formatter 
}() 

func secondsToHoursMinutesSeconds(seconds: Int) -> String { 
    let hourPad = seconds < 36000 ? "0" : "" // add 0 in front if less than 10 hours 
    return hourPad + dateComponentsFormatter.string(from: seconds)! 
} 

secondsToHoursMinutesSeconds(3602) // 01:00:02 

由於DateComponentsFormatter並不會自動墊小時zeroFormattingBehavior = .pad,你必須添加「手動」。
格式化程序本身被聲明爲延遲計算屬性以避免重複實例化。

+0

非常感謝。更好的方法和乾淨的代碼 – SNos

相關問題