我正在尝试本地化字符串。
在英语中,我得到一个日期字符串,如“Friday,Jun 26”,但在西班牙语中,它就像“jueves,jun 25”。
第一个字母很小,但我试图得到一个大写的第一个字母就像英语。
下面是我的代码。
let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "EEEE, MMM d"
longDateFormatter.locale = Locale(identifier: "es")
字符串
有没有办法把日期的第一个字母大写?
1条答案
按热度按时间ehxuflar1#
显然,西班牙语不像我们在英语中那样将月份和星期的名称大写。因此,您获得的格式对于西班牙语是正确的,您应该停止尝试更改它。(本质上,这是一个x/y问题。)
查看此链接:https://www.spanishdict.com/answers/181002/do-months-need-to-be-capitalized-in-spanish#:~:text=Spanish%20does%20NOT%20capitalize%3A&text=%3F-,日历%3A%20第%20天,共%20天,第20个月和第%20个月,共%20年。& text =%3F-,国籍%3A%20尽管%20国家%20和%20城市%20的%20名称%20已大写%20 2C%20words,derived%20from%20them%20are%20not.
如果你想做一些与西班牙语正确本地化不同的事情,你需要从西班牙语本地化中获取输出并对其进行操作。你可以简单地使用
longDateFormatter.string(from: date).capitalized
,这将使结果日期字符串中的每个单词大写。字符串
收益率
Viernes,6月26日
但同样,这是用西班牙语显示日期的错误方式。这就像用英语显示“星期五,6月26日”一样错误。
2023年10月26日编辑:
请注意,正如@user28434'mstep所提到的,对于本地化的日期转换,最好使用
setLocalizedDateFormatFromTemplate
设置格式化程序的格式字符串。通过这种更改,上面的代码(不强制输出为大写)看起来像这样:型
(In在这种特殊情况下,
longDateFormatter.setLocalizedDateFormatFromTemplate("EEEE, MMM d")
和longDateFormatter.dateFormat = "EEEE, MMM d"
似乎产生相同的结果,但对可本地化的格式化程序使用setLocalizedDateFormatFromTemplate
仍然是最佳实践。