swift 如何获取首字母大写的日期字符串?

cgvd09ve  于 2023-11-16  发布在  Swift
关注(0)|答案(1)|浏览(124)

我正在尝试本地化字符串。
在英语中,我得到一个日期字符串,如“Friday,Jun 26”,但在西班牙语中,它就像“jueves,jun 25”。
第一个字母很小,但我试图得到一个大写的第一个字母就像英语。
下面是我的代码。

let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "EEEE, MMM d"
longDateFormatter.locale = Locale(identifier: "es")

字符串
有没有办法把日期的第一个字母大写?

ehxuflar

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,这将使结果日期字符串中的每个单词大写。

let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "EEEE, MMM d"
longDateFormatter.locale = Locale(identifier: "es")

let output = longDateFormatter.string(from: Date()).capitalized
print(output)

字符串
收益率
Viernes,6月26日
但同样,这是用西班牙语显示日期的错误方式。这就像用英语显示“星期五,6月26日”一样错误。

2023年10月26日编辑:

请注意,正如@user28434'mstep所提到的,对于本地化的日期转换,最好使用setLocalizedDateFormatFromTemplate设置格式化程序的格式字符串。通过这种更改,上面的代码(不强制输出为大写)看起来像这样:

let longDateFormatter = DateFormatter()
longDateFormatter.setLocalizedDateFormatFromTemplate("EEEE, MMM d")
longDateFormatter.locale = Locale(identifier: "es")
    
let output = longDateFormatter.string(from: Date())
print(output)


(In在这种特殊情况下,longDateFormatter.setLocalizedDateFormatFromTemplate("EEEE, MMM d")longDateFormatter.dateFormat = "EEEE, MMM d"似乎产生相同的结果,但对可本地化的格式化程序使用setLocalizedDateFormatFromTemplate仍然是最佳实践。

相关问题