如何使用NSDateComponentFormatter让我的计时器显示正确的数字格式

时间:2015-02-18 02:03:17

标签: xcode swift

我一直试图让我的StopWatch以下列格式显示时间 00h:00m:00s(后缀是可选的)使用NSDateComponentFormatter()

但我得到的是一个连续的0列......任何建议都会非常感激。

func timerResults(){
    ++stopWatchCounter


    let formatter = NSDateComponentsFormatter()
    formatter.unitsStyle = .Abbreviated
    formatter.allowedUnits = .CalendarUnitSecond | .CalendarUnitMinute | .CalendarUnitHour

    let counterComponents = NSDateComponents()
        counterComponents.hour = 00
        counterComponents.minute = 00
        counterComponents.second = 00

    if let stopwatch = formatter.stringFromDateComponents(counterComponents){

  //  stopWatch.text = "\(stopwatch)"
      stopWatch.text = "\(stopWatchCounter)"

            println(stopwatch)

    }}

1 个答案:

答案 0 :(得分:0)

使用NSDateComponentsFormatter()是不可能的。如果你使用.Positional,你会得到类似这样的1:01:01。如果你使用.Short将是这样的“1小时,1分钟,1秒”。您可以使用String(format :)并将您自己的格式创建为NStimeInterval扩展,如下所示:

extension NSTimeInterval {
    var time:String {
        return String(format:"%02dh:%02dm:%02ds", Int((self/3600.0)%100),Int((self/60.0)%60), Int((self) % 60 ))
    }
}

(359999.0).time    // "99h:59m:59s"