gpt4 book ai didi

macos - DateComponentsFormatter 可以格式化小数秒吗?

转载 作者:行者123 更新时间:2023-12-04 11:19:58 26 4
gpt4 key购买 nike

我想打印,例如,值 1.5 为“1.5 秒”,就像 Safari 的时间线那样,我正在尝试使用 DateComponentsFormatter。

不幸的是,它的 .allowedUnits只能下降到 .second (即使枚举有 .nanosecond )。我试过设置 .allowsFractionalUnits = true ,但我仍然得到“0秒”。

有没有办法从 DateComponentsFormatter 中获得小数秒?

最佳答案

对于位置单位样式,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

不幸的是,将这种方法用于其他日期样式甚至更加困难。

关于macos - DateComponentsFormatter 可以格式化小数秒吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43291587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com