DateFormatter 返回语言不正确的字符串
DateFormatter returning string with incorrect language
我正在尝试以我设备的语言显示格式化日期,但它一直以英语显示(即使设备设置为葡萄牙语)。
在我的 ViewController 我创建了一个日期:
let todaysDate: Date = Date()
我调用这个函数(它是 Date 的扩展):
func getFullDate() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
dateFormatter.calendar = Calendar.current
dateFormatter.locale = Locale.current
return dateFormatter.string(from: self)
}
输出始终为英文:
08 March 2019
我还检查了终端中的 Locale.current 是否正确,我得到:
▿ en_BR (current)
我不想定义硬编码的语言,因为我想支持其他语言,但它不起作用。您能给我一些解决此问题的提示吗?
func portugueseFormattedEn_US -> String {
Formatter.date.calendar = Calendar(identifier: .iso8601)
Formatter.date.locale = Locale(identifier: “pt-PT”)
Formatter.date.timeZone = .current
Formatter.date.dateFormat = "dd/M/yyyy, H:mm"
return Formatter.date.string(from: self)
}
在 "Locale(identntfier: “pt-PT”)" 中,您必须传递您想要的确切标识符,还需要设置语言。
为了让应用程序以葡萄牙语显示日期,
- 添加空
Strings.strings
文件
- 在项目设置中,添加葡萄牙语本地化
- 尽管字符串文件为空,但应用程序将本地化为
葡萄牙语 因此,通过在“设置”中将语言更改为 葡萄牙语
非常感谢您的帮助!
我刚刚发现我只有英语的本地化字符串,正如 rmaddy 在 和 iOS 中指出的那样 11 我还需要一个本地化的字符串文件来表示我想要的语言支持(在我的例子中是葡萄牙语)。
所以我刚刚在语言本地化部分添加了对葡萄牙语的支持,现在它可以正常工作了! :D
据我了解你的问题。您想要使用当前设备语言更改日期格式。
将区域设置设置为您的首选语言
let formatter = DateFormatter()
formatter.timeZone = TimeZone.current
formatter.locale = Locale.init(identifier: Locale.preferredLanguages.first!)
formatter.setLocalizedDateFormatFromTemplate("ddMMMMyyyy HH:mm")
let stringDate = formatter.string(from: Date())
print(stringDate)
输出:- 使用当前设备语言显示日期。
2019 年 3 月 8 日 10:54
我正在尝试以我设备的语言显示格式化日期,但它一直以英语显示(即使设备设置为葡萄牙语)。
在我的 ViewController 我创建了一个日期:
let todaysDate: Date = Date()
我调用这个函数(它是 Date 的扩展):
func getFullDate() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
dateFormatter.calendar = Calendar.current
dateFormatter.locale = Locale.current
return dateFormatter.string(from: self)
}
输出始终为英文:
08 March 2019
我还检查了终端中的 Locale.current 是否正确,我得到:
▿ en_BR (current)
我不想定义硬编码的语言,因为我想支持其他语言,但它不起作用。您能给我一些解决此问题的提示吗?
func portugueseFormattedEn_US -> String {
Formatter.date.calendar = Calendar(identifier: .iso8601)
Formatter.date.locale = Locale(identifier: “pt-PT”)
Formatter.date.timeZone = .current
Formatter.date.dateFormat = "dd/M/yyyy, H:mm"
return Formatter.date.string(from: self)
}
在 "Locale(identntfier: “pt-PT”)" 中,您必须传递您想要的确切标识符,还需要设置语言。
为了让应用程序以葡萄牙语显示日期,
- 添加空
Strings.strings
文件 - 在项目设置中,添加葡萄牙语本地化
- 尽管字符串文件为空,但应用程序将本地化为 葡萄牙语 因此,通过在“设置”中将语言更改为 葡萄牙语
非常感谢您的帮助!
我刚刚发现我只有英语的本地化字符串,正如 rmaddy 在
所以我刚刚在语言本地化部分添加了对葡萄牙语的支持,现在它可以正常工作了! :D
据我了解你的问题。您想要使用当前设备语言更改日期格式。
将区域设置设置为您的首选语言
let formatter = DateFormatter()
formatter.timeZone = TimeZone.current
formatter.locale = Locale.init(identifier: Locale.preferredLanguages.first!)
formatter.setLocalizedDateFormatFromTemplate("ddMMMMyyyy HH:mm")
let stringDate = formatter.string(from: Date())
print(stringDate)
输出:- 使用当前设备语言显示日期。
2019 年 3 月 8 日 10:54