swift - 应用程序在模拟器中崩溃,而不是在用于转换日期格式的设备上
问题描述
在将“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
结果时间需要根据“印度标准时间”显示。
解决方案
看来,您在以下位置使用了不正确的日期格式“MMM dd yyyy, hh:mm”:
formatIn: String, formatOut: String
小时是“HH”,但不是“hh”。
推荐阅读
- javascript - Firefox、触摸事件和“平滑”滚动行为——导致不滚动
- r - 差异表达基因分析:如何对不同临床矩阵的表达矩阵进行t.test?
- amazon-web-services - 如何跨多个服务器实例保留“计数器”变量?
- php - 有没有办法将每个循环中的对象传递到 swiftmailer 消息中?
- javascript - 有没有办法执行从 JavaScript 中的输入标签抓取的代码?
- android - 在 IO 线程上调用 doOnSubscribe
- javascript - React:上下文提供者何时更新其消费者?
- c# - -ConnectionUri 参数错误,远程会话尝试将消息传递到网络上的计算机
- vb.net - 显示多条记录
- spring-boot - 无法通过 bootJar 任务创建可执行的 Spring Boot jar