在Swift中为NSDateComponenstFormatter设置多个allowedUnits

时间:2015-09-17 04:38:51

标签: ios swift nsdatecomponentsformatter

背景:

使用NSDateComponentsFormatter格式化NSTimeInterval时,使用allowedUnits属性将结果字符串舍入到相关的时间单位通常很方便。

例如,我可能对获取第二个时间没有兴趣,因此将allowedUnits设置为分钟会得到一个适当舍入的输出字符串:

let duration: NSTimeInterval = 3665.0    // 1 hour, 1 minute and 5 seconds
let durationFormatter = NSDateComponentsFormatter()

durationFormatter.unitsStyle = .Full
durationFormatter.zeroFormattingBehavior = .DropAll
durationFormatter.allowedUnits = .Minute

let formattedDuration = durationFormatter.stringFromTimeInterval(duration)

formattedDuration将是“61分钟”。

问题:

如何将allowedUnits设置为.Hour.Minute,以便格式化的持续时间为“1小时1分钟”?

NSDateComponentFormatter Class Reference并未真正涵盖如何执行此操作。

2 个答案:

答案 0 :(得分:8)

正如Leo所建议的,你可以简单地在数组中提供allowedUnits

durationFormatter.allowedUnits = [.Hour, .Minute]

答案 1 :(得分:-2)

我提出的解决方案是通过将所需允许单位的原始值添加到一起来创建NSCalendarUnit

durationFormatter.allowedUnits = NSCalendarUnit(rawValue: NSCalendarUnit.Hour.rawValue + NSCalendarUnit.Minute.rawValue)

我不想知道是否有更好的语法或替代方法来执行此操作。