仅在Simulator上将时间从String转换为Date崩溃

时间:2017-07-29 19:04:18

标签: ios swift nsdateformatter

目前我正在使用此代码将时间从String转换为Date

public static func dateFromTime(_ time: String) -> Date {
    let formatter = DateFormatter()
    formatter.dateFormat = "k:mm"
    formatter.locale = NSLocale.current

    return formatter.date(from: time)!
}

这适用于我的设备,但它在模拟器上崩溃。他们都使用我能看到的12小时格式。

此方法崩溃时收到的字符串是"5:30 AM"

此代码可能在模拟器而非设备上崩溃的任何其他原因?

2 个答案:

答案 0 :(得分:1)

24小时格式的小k&资本K为12小时(上午/下午)。如果您希望12小时格式化时间,那么您应该使用大写K来格式化。 link here

希望它有所帮助。

答案 1 :(得分:1)

由于日期格式正确,您的代码崩溃了!

对于,"5:30 AM"使用"h:mm a",而不是"k:mm"

为避免任何类型的崩溃,请更新您的代码,如下所示。

public static func dateFromTime(_ time: String) -> Date {
        let formatter = DateFormatter()
        formatter.dateFormat = "h:mm a"
        formatter.locale = NSLocale.current
        if let date = formatter.date(from: time)
        {
            return date
        }
        print("Invalid arguments ! Returning Current Date . ")
        return Date()
    }