我想根据用户首选项中的“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 小时格式。
最佳答案
//MARK:- 使用它将 24 小时时间格式转换为 12 小时格式字符串
func TwelveHourFormateFrom24Hours(time : String)->String
{
let Time = time.components(separatedBy: ".")
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "H:mm:ss"
if let inDate = dateFormatter.date(from: Time[0])
{
dateFormatter.dateFormat = "h:mm a"
dateFormatter.timeZone = TimeZone.current
let outTime = dateFormatter.string(from: inDate)
print("in \(time)")
print("out \(outTime)")
return outTime
}
return time
}
//MARK:- 24 小时格式字符串
func TwentyFourHourFormate(time : String)->String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm a"
if let inDate = dateFormatter.date(from: time)
{
dateFormatter.dateFormat = "H:mm:ss.sss"
let outTime = dateFormatter.string(from: inDate)
print("in \(time)")
print("out \(outTime)")
return outTime
}
return time
}
关于ios - swift 。为自定义区域设置设置特定时间格式(12/24 小时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948378/