NSDateComponentFormatter 为 NSTimeInvervals <= 60 打印 1

NSDateComponentFormatter Print 1 for NSTimeInvervals <= 60

我正在尝试创建一个计时器应用程序并利用 iOS8 的 NSDateComponentsFormatter。

如何为介于 0 和 60 之间的 NSTimeInterval 值输出格式正确的字符串?

正如在 Swift 操场上看到的那样,它似乎是 return 值 1。我想 return 一个字符串,其格式在 NSTimeIntervals > 60, "0:12".

注意:我知道我可以手动获取以秒为单位的时间并计算小时、分钟等,但这不会使用 NSDateComponentsFormatter。

// Playground - noun: a place where people can play

import UIKit

let dateComponentFormatter: NSDateComponentsFormatter = NSDateComponentsFormatter()
dateComponentFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyle.Positional

for (var timeInterval: NSTimeInterval = -1; timeInterval < 100; timeInterval++) {
    println("Time: \(dateComponentFormatter.stringFromTimeInterval(timeInterval))")
}

我不完全确定你需要什么格式,但你可以而且应该尝试使用 allowedUnitszeroFormattingBehavior

例如这个格式化程序配置

let dateComponentFormatter: NSDateComponentsFormatter = NSDateComponentsFormatter()
dateComponentFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyle.Positional
dateComponentFormatter.allowedUnits = .CalendarUnitSecond | .CalendarUnitMinute
dateComponentFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehavior.allZeros

将创建这些字符串:

Time: 0:00
Time: 0:01
Time: 0:02
Time: 0:03
Time: 0:04
Time: 0:05
Time: 0:06
Time: 0:07
Time: 0:08
Time: 0:09
Time: 0:10