时间符号的iOS本地化字符串常量(“MINUTE(S)”、“HOUR(S)”等)

y1aodyip  于 2023-03-31  发布在  iOS
关注(0)|答案(3)|浏览(135)

我正在写一个应用程序,它需要显示日期与相应的时间符号,如“小时”,“分钟”等。有很酷的本地化常数的月份和工作日的名称在NSDateFormatter像monthSymbols(一月,二月等)。然而,我找不到这样的符号,如“小时”,“分钟”本身。这样的常数存在还是我应该创建和本地化这些符号自己?
UPD:我的目标是一个文本标签下“30”-只有本地化的“MIN”字符串没有任何数字,我应该摆脱之前,把文本从日期格式化在标签底部. x1c 0d1x

5lhxktic

5lhxktic1#

根据您需要的细节,NSDateComponentsFormatter可能是解决方案。它包括NSDateComponentsFormatterUnitsStyleSpellOut,它以“One hour,ten minutes”等格式呈现字符串。
更新:阅读评论后,我仍然不确定你真正需要什么样的格式。但希望这将是一个有用的例子:

let formatter = NSDateComponentsFormatter()
formatter.unitsStyle = NSDateComponentsFormatterUnitsStyle.Full
formatter.allowedUnits = [ NSCalendarUnit.Minute, NSCalendarUnit.Hour ]

let date = NSDate()

let dateComponents = NSCalendar.currentCalendar().components([.Minute, .Hour], fromDate: date)
let dateString = formatter.stringFromDateComponents(dateComponents)

此时,dateString将类似于“15小时11分钟”。

3j86kqsm

3j86kqsm2#

如果只需要本地化min字符串,可以使用MeasurementFormatter()

let measurementFormatter: MeasurementFormatter = {
    let measurementFormatter = MeasurementFormatter()
    measurementFormatter.locale = Locale.current
    measurementFormatter.unitOptions = .providedUnit
    measurementFormatter.unitStyle = .short        
    return measurementFormatter
}()

label.text = measurementFormatter.string(from: UnitDuration.minutes)
i5desfxk

i5desfxk3#

不是很漂亮,但工作:

var localizedMinutesShort: String {
    let formatter = DateComponentsFormatter()
    formatter.unitsStyle = .short
    formatter.allowedUnits = [.minute]

    let date = Date()

    let dateComponents = Calendar.current.dateComponents([.minute], from: date)
    let dateString = formatter.string(from: dateComponents)
    
    return dateString?.filter { $0.isLetter } ?? "min"
}

灵感来自@Tom哈灵顿解决方案。

相关问题