为什么我的 DateFormatter .date(from: String) return nil

Why would my DateFormatter .date(from: String) return nil

一直在使用此函数将字符串转换为日期对象。
SO 上的类似问题,但是找不到可以处理我当时的情况的问题。所以这个 post 我相信不是重复的。

    func convertTimeStringToDate() -> Date {
                //time will be "04:48"
                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = "HH:mm"
                dateFormatter.dateStyle = .none
                dateFormatter.timeStyle = .short
                dateFormatter.locale = Locale.current
                return dateFormatter.date(from: "04:48")!
            }

函数 returns nil 在展开时崩溃了!。我看不出代码有什么问题。

你的方法应该是这样的。 dateStyletimeStyle 再次更改格式。

func convertTimeStringToDate() -> Date {
    //time will be "04:48"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    dateFormatter.locale = Locale.current
    return dateFormatter.date(from: "04:48")!
}

但是,值得注意的是最后日期格式被认为是有效的。所以,如果您将格式设置为相反的顺序,它就会起作用!

P.S - 我只看到 dateStyletimeStyle 用于输出格式。


注意:如果您输入的格式有可能发生变化,那么您应该安全地解开日期并设置默认日期或其他内容,这样它就不会让您的应用崩溃。

请不要设置 dateStyle 和 timeStyle。

func convertTimeStringToDate() -> Date {
    //time will be "04:48"
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "HH:mm"
    dateFormatter.locale = Locale.current
    return dateFormatter.date(from: "04:48")!
}