Swift 为什么我的DateFormatter.date(from:String)会返回nil

Swift 为什么我的DateFormatter.date(from:String)会返回nil,swift,date,nsdate,nsdateformatter,Swift,Date,Nsdate,Nsdateformatter,已使用此函数将字符串转换为日期对象。 类似的Qs上,所以,但无法找到一个处理我的情况下,只是时间。所以我相信这篇文章不是重复的 func convertTimeStringToDate() -> Date { //time will be "04:48" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:

已使用此函数将字符串转换为日期对象。
类似的Qs上,所以,但无法找到一个处理我的情况下,只是时间。所以我相信这篇文章不是重复的

    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")!
            }

函数返回nil,因此在其展开时崩溃!。我看不出代码有什么问题

您的方法应该是这样的<代码>日期样式和时间样式再次更改格式

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")!
}
然而,有趣的是,最后的日期格式被认为是有效的。因此,如果您将格式设置为相反的顺序,它将工作

另外,我只见过用于输出格式的
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")!
}
然而,有趣的是,最后的日期格式被认为是有效的。因此,如果您将格式设置为相反的顺序,它将工作

另外,我只见过用于输出格式的
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")!
}

请不要设置日期样式和时间样式

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")!
}

这样一个功能的目的是什么?您可以通过DateComponents以更可靠的方式创建有效的日期。您已经将dateFormat指定为“HH:mm”,它对您的输入有效。那么,为什么要再次指定更改格式的
dateStyle
timeStyle
?这就是它崩溃的原因,就是这样。我在工作的时候已经使用这个功能好几个月了。我猜最新的beta版阻止了我逃脱惩罚。请回答这个问题,我接受这样一个功能的目的是什么?您可以通过DateComponents以更可靠的方式创建有效的日期。您已经将dateFormat指定为“HH:mm”,它对您的输入有效。那么,为什么要再次指定更改格式的
dateStyle
timeStyle
?这就是它崩溃的原因,就是这样。我在工作的时候已经使用这个功能好几个月了。我猜最新的beta版阻止了我逃脱惩罚。请将此作为答案,我接受欢迎来到Stackoverflow,并感谢您的贡献。但是,问题已经得到了回答,您的观点已经提出。欢迎来到Stackoverflow,并感谢您的贡献。然而,问题已经得到了回答,你的观点已经提出。