ios - 日期时间格式化程序崩溃

标签 ios swift datetime swift4

在我的代码中,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/

相关文章:

ios - 如何在委托(delegate)方法实现中重新调用 `super`?

ios - localizedCaseInsensitiveContainsString 在 Swift 中不可用

java - 根据 DateTime 行对 HashBasedTable 条目进行分组

swift - Firestore 跨多个字段查询相同的值

javascript - 在几分钟内得到两个日期之间的差异

java - 如何在 Java 中向另一个 Time 实例添加时间

ios - Adobe Air App 最低 IOS 版本

ios - VoiceOver 焦点将 UICollectionView 重置为第一个条目?

ios - 在 Swift 中获取 Google map 中 Lat Long 的地点 ID

ios - 导航栏按钮的 SWift 3.0 委托(delegate)