Sss*_*ift 12 macos foundation nsdatecomponents nsdatecomponentsformatter
我想打印,例如,值1.5为"1.5秒",就像Safari的时间轴一样,我正在尝试使用DateComponentsFormatter.
不幸的是,它.allowedUnits
只能归结为.second
(即使枚举有.nanosecond
).我尝试过设置.allowsFractionalUnits = true
,但我仍然得到"0秒".
有没有办法从DateComponentsFormatter中获得小数秒?
小智 2
对于位置单位样式,DateComponentsFormatter
可以与 一起使用NumberFormatter
来获取区域设置感知字符串。
func format(_ seconds: TimeInterval) -> String {
let components = DateComponentsFormatter()
components.allowedUnits = [.minute, .second]
components.allowsFractionalUnits = true // does not work as expected
components.unitsStyle = .positional
components.zeroFormattingBehavior = .pad
let fraction = NumberFormatter()
fraction.maximumIntegerDigits = 0
fraction.minimumFractionDigits = 0
fraction.maximumFractionDigits = 3
fraction.alwaysShowsDecimalSeparator = false
let fractionalPart = NSNumber(value: seconds.truncatingRemainder(dividingBy: 1))
return components.string(from: seconds)! + fraction.string(from: fractionalPart)!
}
print(Locale.current) // ru_RU (current)
print(format(600.5)) // 10:00,5 <- note locale specific decimal separator
Run Code Online (Sandbox Code Playgroud)
不幸的是,将此方法用于其他日期样式更加困难。
归档时间: |
|
查看次数: |
270 次 |
最近记录: |