gpt4 book ai didi

ios - 获取不超过两个字母的日历工作日符号

转载 作者:行者123 更新时间:2023-11-28 13:36:07 26 4
gpt4 key购买 nike

我需要以最短的格式(两个字母)获取工作日符号。我使用 CalendarshortStandaloneWeekdaySymbols 属性,但是这会返回三个字母的星期几:

Calendar.current.shortStandaloneWeekdaySymbols

结果:

["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]

我想得到这样的东西(英语):

["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]

可以通过 StringremoveLast() 方法手动删除最后一个字符,但是,我认为,对于某些语言环境,结果是错误的.

那么,有没有办法从 Calendar 返回两个字母的工作日符号。

最佳答案

Calendar 不提供用于获取工作日名称的两个字母缩写的内置属性。但是,日期格式的 Unicode 标准确实提供了您所需要的。格式 EEEEEE 提供两个字母的工作日名称,cccccc 提供两个字母的独立工作日名称。

这是一个 Calendar 扩展,它为您提供这些值:

extension Calendar {
var shorterWeekdaySymbols: [String] {
return symbolsFor("EEEEEE")
}

var shorterStandaloneWeekdaySymbols: [String] {
return symbolsFor("cccccc")
}

private func symbolsFor(_ format: String) -> [String] {
let df = DateFormatter()
df.locale = self.locale
df.calendar = self
df.dateFormat = format
let weekdays = self.range(of: .weekday, in: .year, for: Date())!
return weekdays.map {
let date = self.nextDate(after: Date(), matching: DateComponents(weekday: $0), matchingPolicy: .strict)!
return df.string(from: date)
}
}
}

示例用法:

print(Calendar.current.shorterWeekdaySymbols)
print(Calendar.current.shorterStandaloneWeekdaySymbols)

以西类牙为例:

var calES = Calendar.current
calES.locale = Locale(identifier: "es_ES")
print(calES.shorterWeekdaySymbols)
print(calES.shorterStandaloneWeekdaySymbols)

这已经针对每个日历的每个语言环境进行了测试,没有一个强制解包导致问题。

关于ios - 获取不超过两个字母的日历工作日符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603368/

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