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

问题描述 投票:0回答:1

我正在尝试本地化字符串。

在英语中,我得到的日期字符串类似于“Friday, Jun 26”,但在西班牙语中,它类似于“jueves, jun 25”。

第一个字母很小,但我想像英语一样获得大写的第一个字母。

下面是我的代码。

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

有什么方法可以获取首字母大写的日期吗?

ios swift date-format
1个回答
2
投票

显然西班牙语并不像英语那样将月份和星期几的名称大写。因此,您获得的西班牙语格式是正确的,您应该停止尝试更改它。 (本质上,这是一个 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%20Names%20of%20the%20days%20of%20the,and%20months%20of%20the%20year.&text=%3F-,国籍%3A%20虽然%20names%20of%20countries%20and %20cities%20are%20大写%2C%20个单词,派生%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)

产量

维尔内斯,6 月 26 日

但同样,这是用西班牙语显示日期的“错误”方式。这与用英语显示“friday, June 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)

© www.soinside.com 2019 - 2024. All rights reserved.