来自“ 24:00”的DateFormatter字符串返回Nil [英] DateFormatter from "24:00" string returns Nil

查看:61
本文介绍了来自“ 24:00”的DateFormatter字符串返回Nil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I cannot seem to figure out why only "24:00" returns nil instead of 12:00AM, whereas "23:59" returns correctly as 11:59PM.

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至24的值,您必须使用 k ,如果您有前导零,则需要使用 kk

You are using the wrong date format for the hour component. For values from 1-24 you have to use k, if you have a leading zero you need to use 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"
}

这篇关于来自“ 24:00”的DateFormatter字符串返回Nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆