0

我正在尝试创建一个计时器应用程序并利用 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))")
}
4

1 回答 1

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
于 2015-01-12T20:45:40.847 回答