Swift:根据秒数格式化时间字符串

时间:2016-09-30 10:19:33

标签: ios swift nsdate nstimer

我的应用中有一个NSTimer对象,以秒为单位计算经过的时间。

我希望在我的应用程序界面中格式化UILabel,使其符合众所周知的标准。

示例

00:01 - 一秒

01:00 - 60秒

01:50:50 - 6650秒

我想知道怎么做,你知道任何基于Int秒数创建这样的String的pod / library吗?

显然我自己可以采用复杂的方法,但由于建议不要重新发明轮子,我宁愿使用一些现成的解决方案。

我还没有在Foundation库中找到任何相关内容,也没有在HealthKit中找到相关内容

您对如何完成任务有什么建议吗?如果你说"去自己写吧#34; - 没关系。但我想确保我不会错过任何简单明了的解决方案。

提前致谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

}