【发布时间】:2018-08-21 12:10:39
【问题描述】:
我想根据用户首选项中的“24 小时制”选项从 DateFormatter 获取 12 小时或 24 小时格式的时间。
如果我像这样设置 "24-Hour-Time" = "on" 和 DateFormatter:
let formatter = DateFormatter()
let locale = Locale(identifier: "en_US")
print(locale) // "en_US (fixed)\n"
formatter.locale = locale
formatter.dateStyle = .none
formatter.timeStyle = .short
formatter.string(from: Date()) // "2:54 PM" (not "14:54")
但如果我设置:
let locale = Locale.current // "en_US (current)\n"
而不是
let locale = Locale(identifier: "en_US") // "en_US (fixed)\n"
结果将是
formatter.string(from: Date()) // "14:54"
如何创建自定义区域设置 12 或 24 小时格式。
【问题讨论】:
-
我不知道您要达到什么目的,但您可以检查用户的 24h 设置并根据它设置自定义 dateFormat。
extension DateFormatter { var is24h: Bool { return DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: .current)?.contains("a") == false } }
标签: ios swift nsdateformatter nslocale