2016-09-30 5 views
0

私のアプリには経過時間を秒単位でカウントするNSTimerオブジェクトがあります。Swift:秒数に基づいた時間文字列の書式設定

UILabelをよく知っている標準に適合する方法でアプリケーションのインターフェイスにフォーマットしたいと思います。

午後12時01分 - 1秒

1時00分 - 60秒

1時50分50秒 - 6650秒

私はそれを行う方法を疑問に思います、 Intの秒数に基づいてこのような文字列を作成するポッド/ライブラリを知っていますか?

明らかに私は自分で複雑な方法を使うことができますが、ホイールを再作成しないことをお勧めしますので、すぐに使えるソリューションを使いたいと思っています。

私は財団ライブラリ内の関連する何かを発見していない、また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 

} 
関連する問題