【问题标题】:Format integer to minutes with new Foundation formatters?使用新的 Foundation 格式化程序将整数格式化为分钟?
【发布时间】:2021-06-13 22:11:12
【问题描述】:

我正在尝试格式化整数以将其显示为分钟,但我无法正确使用语法,并且文档对此仍然很清楚。这就是我正在尝试的:

let value: Int = 20
Text(value.formatted(.components(style: .abbreviated, fields: [.minute])))
// Compile error: Instance method 'formatted' requires the types 'Int' and 'Date.ComponentsFormatStyle.FormatInput' (aka 'Range<Date>') be equivalent

我正在尝试显示:20 min。如何使用来自 WWDC 2021 的 new Foundation formatters 改进来完成这项工作?

我可以这样做:

static let formatter: DateComponentsFormatter = {
    let formatter = DateComponentsFormatter()
    formatter.unitsStyle = .short
    formatter.allowedUnits = [.minute]
    return formatter
}()

Self.formatter.string(for: DateComponents(minute: value))

【问题讨论】:

  • 您的代码中的语法应该应用于Date 相关值,这就是错误所说的内容。

标签: swiftui nsdateformatter foundation formatter nsnumberformatter


【解决方案1】:

要格式化一个整数,你需要一个 NumberFormatter。或者你可以这样做:

Text("\(value) min")

【讨论】:

  • 我希望在 Foundation 中添加新的格式化程序来做到这一点。这也需要我为每种语言创建本地化。
  • 我以为您的问题是“我正在尝试显示:20 分钟。如何做到这一点?”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多