时间格式 (hh:mm a) 不适用于 swift 4 中的 iOS 11.1.1

Time format (hh:mm a) not working for iOS 11.1.1 in swift 4

我正在转换时间格式 (hh:mm a)。它在所有其他版本上工作正常,但在 11.1.1

上出现错误

当我将当前 DateFormatter 更改为时间时,它仅提供 hh:mm

let dateFormatter: DateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"

// Set date format
// dateFormatter.timeStyle = .short
// Apply date format
let selectedtime: String = dateFormatter.string(from: sender.date)
self.timeTextField.text = selectedtime

//// It gives 02:57 only What is missing although it is working for all other version.

提前致谢!

我在 iOS 11.0.3 遇到了同样的问题。 我的时间格式 "h:mm a" 或 "hh:mm a" 与 "hh:mm" 完全一样,即显示“21:00”而不是“9:00 PM”或“09:00 PM”。

如何解决:

  1. 如果允许使用“21:00 PM”格式,您可以在日期格式字符串中大写小时标识符 "h",以及 "H:mm a" 或 "HH:mm a" 格式会起作用的!

  2. 但如果没有,请设置您的 dateFormatter "locale" 属性。在我的例子中是 dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_GB"];

Swift 解法: dateFormatter.locale = Locale(identifier: "en_GB") 之后我得到了“9:00 pm”字符串而不是错误的“21:00”。

 dateFormatter.locale = NSLocale.system