gpt4 book ai didi

ios - 我可以在 iOS 中获取日、周、月、年的本地化字符串吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:19 37 4
gpt4 key购买 nike

除了手动查找之外似乎不可能。

请注意,我不是在询问本地化日期。我想要“日”、“周”、“月”、“年”的实际术语。

编辑:我正在寻找本地化的翻译。例如,如果我计算两个日期之间的 3 个月,我想向用户显示“3 个月”的本地化版本。希望对您有所帮助。

最佳答案

我们可以从 DateComponentsFormatter 中提取它,这是我的日历扩展:

extension Calendar {
mutating func localizedUnitTitle(_ unit: NSCalendar.Unit, value: Int = 1, locale: Locale? = nil) -> String {
let emptyString = String()
let date = Date()
let component = getComponent(from: unit)
guard let sinceUnits = self.date(byAdding: component, value: value, to: date) else {
return emptyString
}

let formatter = DateComponentsFormatter()
if locale != nil {
self.locale = locale
}
formatter.calendar = self
formatter.allowedUnits = [unit]
formatter.unitsStyle = .full
guard let string = formatter.string(from: date, to: sinceUnits) else {
return emptyString
}

return string.replacingOccurrences(of: String(value), with: emptyString).trimmingCharacters(in: .whitespaces).capitalized
}
// swiftlint:disable:next cyclomatic_complexity
private func getComponent(from unit: NSCalendar.Unit) -> Component {
let component: Component

switch unit {
case .era:
component = .era
case .year:
component = .year
case .month:
component = .month
case .day:
component = .day
case .hour:
component = .hour
case .minute:
component = .minute
case .second:
component = .second
case .weekday:
component = .weekday
case .weekdayOrdinal:
component = .weekdayOrdinal
case .quarter:
component = .quarter
case .weekOfMonth:
component = .weekOfMonth
case .weekOfYear:
component = .weekOfYear
case .yearForWeekOfYear:
component = .yearForWeekOfYear
case .nanosecond:
component = .nanosecond
case .calendar:
component = .calendar
case .timeZone:
component = .timeZone
default:
component = .calendar
}
return component
}
}

用法:

var calendar = Calendar.current
let dayString = calendar.localizedUnitTitle(.day) //Day
let weekString = calendar.localizedUnitTitle(.weekOfMonth) //Week
let monthString = calendar.localizedUnitTitle(.month) //Month
let yearString = calendar.localizedUnitTitle(.year) //Year
let locale = Locale(identifier: "uk")
let secondString = calendar.localizedUnitTitle(.second, locale: locale) //Секунда

关于ios - 我可以在 iOS 中获取日、周、月、年的本地化字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14611321/

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