OGeek|极客世界-中国程序员成长平台

标题: ios - 我应该怎么做才能根据所选的语言环境正确显示日期? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 05:40
标题: ios - 我应该怎么做才能根据所选的语言环境正确显示日期?

我使用日期格式“MM/dd/yyyy h:mm a”。但是当我使用不同的语言环境时,日期几乎没有变化。

let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "MM/dd/yyyy h:mm a"

formatter.locale = Locale(identifier: "de_DE")
result = formatter.string(from: date) // 09/10/2019 2:41 PM

formatter.locale = Locale(identifier: "es_ES")
result = formatter.string(from: date) // 09/10/2019 2:41 p. m.

但是当我使用这个 dateFormat "MM/dd/yyyy j:mm a"并以这种方式使用它时 formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "MM/dd/yyyy j:mm a", options: 0, locale: Locale(identifier: "de_DE")) 我有重大变化。

formatter.dateFormat = "MM/dd/yyyy j:mm a"
formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "MM/dd/yyyy j:mm a", options: 0, locale: Locale(identifier: "de_DE"))
        result = formatter.string(from: date) // 10.09.2019, 14:41
formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "MM/dd/yyyy j:mm a", options: 0, locale: Locale(identifier: "es_ES"))
        result = formatter.string(from: date) // 10/09/2019 14:41

如何不使用日期格式的“j”?我应该怎么做才能根据所选的语言环境正确显示日期?



Best Answer-推荐答案


来自文档:link

你需要使用,

formatter.dateFormat = "MM/dd/yyyy h:mm a"

仅适用于固定格式的字符串。因此,如果您使用它,语言环境将不会有任何影响。要使语言环境生效,您需要使用,

formatter.dateStyle = .short
formatter.timeStyle = .short

方法或者你提到的,

class func dateFormat(fromTemplate tmplate: String, 
              options opts: Int, 
               locale: Locale?) -> String?

方法。就 j 而言,我没有看到任何目的。您可以使用上面的“dateFormatfromTemplate”方法与相同的格式字符串。

关于ios - 我应该怎么做才能根据所选的语言环境正确显示日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57870252/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4