我使用日期格式“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-推荐答案 strong>
来自文档: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/
|