我试图以设备的语言显示格式化的日期,但它始终以英语显示(即使设备设置为葡萄牙语)。
在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)
我不想定义硬编码的语言,因为我想支持其他语言,但是它不起作用。您能给我一些解决方法的提示吗?
答案 0 :(得分:1)
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”)”中,您必须传递所需的确切标识符,并且还需要设置语言。 documentation
答案 1 :(得分:1)
为了使该应用以葡萄牙语显示 日期 ,
Strings.strings
文件答案 2 :(得分:1)
非常感谢您的帮助!
我刚刚发现我只有英文的本地化字符串,正如rmaddy在iOS 11的this link中指出的那样,我还需要针对我要支持的语言提供一个本地化的字符串文件(在我的情况下是葡萄牙语)。
因此,我刚刚在“语言本地化”部分添加了对葡萄牙语的支持,现在它可以正常工作! :D
答案 3 :(得分:0)
我理解您的问题。您想使用当前设备语言更改日期格式。
将语言环境设置为您的首选语言
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