我正在尝试本地化字符串。
在英语中,我得到的日期字符串类似于“Friday, Jun 26”,但在西班牙语中,它类似于“jueves, jun 25”。
第一个字母很小,但我想像英语一样获得大写的第一个字母。
下面是我的代码。
let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "EEEE, MMM d"
longDateFormatter.locale = Locale(identifier: "es")
有什么方法可以获取首字母大写的日期吗?
显然西班牙语并不像英语那样将月份和星期几的名称大写。因此,您获得的西班牙语格式是正确的,您应该停止尝试更改它。 (本质上,这是一个 x/y 问题。)
如果您想做一些与正确的西班牙语本地化不同的事情,您将需要获取西班牙语本地化的输出并对其进行操作。您可以简单地使用
longDateFormatter.string(from: date).capitalized
,它将结果日期字符串中的每个单词大写。
let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "EEEE, MMM d"
longDateFormatter.locale = Locale(identifier: "es")
let output = longDateFormatter.string(from: Date()).capitalized
print(output)
产量
维尔内斯,6 月 26 日
但同样,这是用西班牙语显示日期的“错误”方式。这与用英语显示“friday, June 26”一样错误。 2023 年 10 月 26 日编辑:
setLocalizedDateFormatFromTemplate
设置格式化程序的格式字符串。进行此更改后,上面的代码(不强制输出大写)将如下所示:
let longDateFormatter = DateFormatter()
longDateFormatter.setLocalizedDateFormatFromTemplate("EEEE, MMM d")
longDateFormatter.locale = Locale(identifier: "es")
let output = longDateFormatter.string(from: Date())
print(output)