在我的代码中,dateFormatter.date
在循环中使用了多次(超过 100 次),即使输入日期的格式正确,有时我也会崩溃。获取日期为零(有时)。
getDayFromDate() 函数在循环中,并将从网络服务接收到的不同日期(例如 2018-06-17T00:00:00)作为参数传递。时间总是以 00:00:00 的形式传递。 inputDateString 已检查并且始终格式正确。
extension Formatter {
static let enUSPOSIX: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")//For 11.3.1 version change
return formatter
}()
}
func getDayFromDate(inputDateString: String) -> Int{
let dateFormatter = Formatter.enUSPOSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = dateFormatter.date(from: inputDateString ) // e.g. 2018-06-17T00:00:00
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let calendar = Calendar.current
let dayComponent = calendar.component(.day, from: date!)
return dayComponent
}
我观察到,当 iPhone 中运行太多后台应用程序时,iPhone 就会崩溃。
最佳答案
编写代码时不要使用强制解包。如果你的变量保持零值,它将崩溃
更改您的代码
let dayComponent = calendar.component(.day, from: date!)
至
if let convertedDate = date {
let dayComponent = calendar.component(.day, from: convertedDate)
}
关于ios - 日期时间格式化程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383356/