来自“ 24:00”字符串的DateFormatter返回Nil

时间:2019-08-06 20:22:39

标签: ios swift date

我似乎无法弄清楚为什么只有“ 24:00”返回nil而不是12:00 AM,而“ 23:59”则正确返回11:59 PM。

let dateAsString = "24:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
let date = dateFormatter.date(from: dateAsString)
dateFormatter.dateFormat = "h:mm a"
let Date12 = dateFormatter.string(from: date!)
print(Date12)

1 个答案:

答案 0 :(得分:4)

您为小时部分使用了错误的日期格式。对于1-24之间的值,您必须使用k,如果您使用前导零,则需要使用kk

let dateAsString = "24:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "kk:mm"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
if let date = dateFormatter.date(from: dateAsString) {
    dateFormatter.dateFormat = "h:mm a"
    let date2 = dateFormatter.string(from: date)
    print(date2) // "12:00 AM\n"
}