ios - 字符串扩展 toDate() 使某些设备崩溃
问题描述
我的问题是尝试将字符串转换为日期并崩溃。我的应用程序在 App Store 上,并在我的设备上运行,但它在某些设备上崩溃。我查看崩溃日志并看到它,当字符串到日期时崩溃。我没有不明白为什么我的设备工作正常或某些设备工作正常但其他设备崩溃。
func toDate() -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+03:00" //Your date format
dateFormatter.timeZone = TimeZone(abbreviation: "GMT+3:00") //Current time zone
//according to date format your date string
guard let date = dateFormatter.date(from: self) else {
fatalError()
}
return date
}
解决方案
两种解决方案:
en_US_POSIX
为固定格式添加语言环境。使用
ISO8601DateFormatter
(iOS 8+),好处是没有语言环境,没有日期格式,没有时区。func toDate() -> Date? { let dateFormatter = ISO8601DateFormatter() return dateFormatter.date(from: self) }
无论如何返回一个可选的,fatalError()
在生产环境中会导致非常糟糕的用户体验。
推荐阅读
- javascript - 检测设备/浏览器是否支持全屏 API
- linux - 我如何从另一个目录访问目录中的文件(linux)
- android-fragments - 当您想在 android studio 3.6.3 中创建新片段时,复选框“包括接口回调”在哪里
- java - 使用 feign 客户端进行内部和外部服务通信
- python - 如何让按钮卡在 tkniter 窗口的底部?
- c# - 为什么我无法使用 C# 获取我网站的内容?
- c# - 我可以创建一个行为类似于向量/列表的 Session 变量吗?
- python - 如何抓取 X 秒后加载的网页?
- java - SpringBoot openJ9 Kubernetes Crash InterpreterEmulator.cpp:208
- amazon-web-services - 为什么我的安全组规则在从私有子网调用到公共子网时不起作用?