我正在写一个应用程序,它需要显示日期与相应的时间符号,如“小时”,“分钟”等。有很酷的本地化常数的月份和工作日的名称在NSDateFormatter像monthSymbols(一月,二月等)。然而,我找不到这样的符号,如“小时”,“分钟”本身。这样的常数存在还是我应该创建和本地化这些符号自己?UPD:我的目标是一个文本标签下“30”-只有本地化的“MIN”字符串没有任何数字,我应该摆脱之前,把文本从日期格式化在标签底部. x1c 0d1x
5lhxktic1#
根据您需要的细节,NSDateComponentsFormatter可能是解决方案。它包括NSDateComponentsFormatterUnitsStyleSpellOut,它以“One hour,ten minutes”等格式呈现字符串。更新:阅读评论后,我仍然不确定你真正需要什么样的格式。但希望这将是一个有用的例子:
NSDateComponentsFormatter
NSDateComponentsFormatterUnitsStyleSpellOut
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分钟”。
dateString
3j86kqsm2#
如果只需要本地化min字符串,可以使用MeasurementFormatter()
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)
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哈灵顿解决方案。
3条答案
按热度按时间5lhxktic1#
根据您需要的细节,
NSDateComponentsFormatter
可能是解决方案。它包括NSDateComponentsFormatterUnitsStyleSpellOut
,它以“One hour,ten minutes”等格式呈现字符串。更新:阅读评论后,我仍然不确定你真正需要什么样的格式。但希望这将是一个有用的例子:
此时,
dateString
将类似于“15小时11分钟”。3j86kqsm2#
如果只需要本地化min字符串,可以使用
MeasurementFormatter()
i5desfxk3#
不是很漂亮,但工作:
灵感来自@Tom哈灵顿解决方案。