将时间从字符串转换为日期仅在模拟器上崩溃
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()
}
目前我正在使用此代码将时间从 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()
}