代码之家  ›  专栏  ›  技术社区  ›  RyanTCB

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

  •  0
  • RyanTCB  · 技术社区  · 6 年前

    一直在使用此函数将字符串转换为日期对象。
    类似的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,因此在其展开时崩溃!。我看不出代码有什么问题。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Rakesha Shastri    6 年前

    这就是你的方法。 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")!
    }
    

    然而,有趣的是,最后日期格式被认为是有效的。所以,如果你把格式设置成相反的顺序,它就会工作!

    日期样式


    如果你的输入格式可能会改变,那么你应该安全地打开你的日期,并有一个默认的日期或其他东西,这样它就不会崩溃你的应用程序。

        2
  •  1
  •   Vitaliy Rusinov    6 年前

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