在Swift中为NSDateComponentstFormatter设置多个allowedUnits



背景:

使用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类参考并没有真正涵盖如何做到这一点。

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

durationFormatter.allowedUnits = [.Hour, .Minute]

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

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

我不想知道是否有更好的语法或替代方法。

最新更新