NSDateComponentFormatter为NSTimeInvervals打印1< = 60

时间:2015-01-09 23:28:03

标签: swift nsdatecomponents nsformatter

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

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

如在Swift游乐场中所见,它似乎返回值1.我想返回一个字符串,其格式为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))")
}

1 个答案:

答案 0 :(得分:2)

我不完全确定您需要哪种格式,但您可以而且应该尝试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