首页 > 解决方案 > 应用程序在模拟器中崩溃,而不是在用于转换日期格式的设备上

问题描述

在将“2019-04-25 15:31:22”转换为日期格式“MMM dd yyyy, hh:mm”时,应用程序在模拟器中崩溃,但在设备上运行良好。

线程 1:致命错误:在展开可选值时意外发现 nil

func convertToString (dateString: String, formatIn : String, formatOut : String) -> String {
    let dateFormater = DateFormatter()
    dateFormater.timeZone = (NSTimeZone(abbreviation: "IST")! as TimeZone)
    dateFormater.dateFormat = formatIn
    let date = dateFormater.date(from: dateString)
    dateFormater.timeZone = NSTimeZone.system
    dateFormater.dateFormat = formatOut
    let timeStr = dateFormater.string(from: date!)
    return timeStr
}

timeStr 的打印说明:

表达式产生错误:错误:执行被中断,原因:致命错误:在展开可选值时意外发现 nil。该过程已返回到表达式评估之前的状态。

想明白convertToString的是正确的代码。

一个服务输出响应的格式"yyyy-MM-dd hh:mm:ss"和另一个服务响应日期格式是"yyyy-MM-dd'T'HH:mm:ss'Z'"

    let convertedFormat =  convertToString(dateString: lastTime, 
formatIn: "yyyy-MM-dd hh:mm:ss", formatOut: "MMM dd yyyy, hh:mm")

let convertedDate =  convertToString(dateString: headline.publishedAt!, formatIn: "yyyy-MM-dd'T'HH:mm:ss'Z'", formatOut: "MMMM dd yyyy, hh:mm")
cell.lbl_NewsDate?.text = convertedDate

我想使用通用实用程序转换器功能在“MMM dd yyyy, hh:mm”示例中显示结果时间2019 年 4 月 26 日,23:32

结果时间需要根据“印度标准时间”显示。

标签: swiftnsdateformatterfatal-error

解决方案


看来,您在以下位置使用了不正确的日期格式“MMM dd yyyy, hh:mm”:

formatIn: String, formatOut: String

小时是“HH”,但不是“hh”。


推荐阅读