将时间从字符串转换为日期仅在模拟器上崩溃

Converting time from String to Date crashes on Simulator only

目前我正在使用此代码将时间从 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"

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

小写 k 表示 24 小时格式 & 大写 K 表示 12 小时(am/pm)。如果您希望格式化时间为 12 小时,那么您应该使用大写字母 K 来格式化它。 link here

希望对您有所帮助。

您的代码因日期格式不正确而崩溃!

对于 "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()
    }