iPhone日期格式化程序随机崩溃

时间:2017-06-29 14:33:41

标签: ios swift

在我们的iphone应用程序中,我们解析了从api调用获得的日期。日期正确返回并且是有效日期。现在只有在某些设备上,它会在解开Optional值时因意外发现的nil错误而崩溃。以下是有问题的代码:

//formatDate(date: date, format: FullDateFormat)
class func formatDate(date: String, format: String)->String{
    if date.characters.count == 0 {return "" }
    let formatter = DateFormatter()
    formatter.dateFormat = Constants.FullDateFormat
    let nsDate = formatter.date(from: date)

    formatter.dateFormat = format
    return formatter.string(from: nsDate!)
}

nsDate未被格式化,因为它是零。

Constants.FullDateFormat是一个静态字符串,定义为" M / d / yyyy h:mm:ss a"因为日期总是以这种格式出现

对类函数的调用将如下所示

let newDate = Helpers.formatDate(date: "9/27/2017 9:26:51 AM", format: "h:mm a")

有些设备会崩溃而大多数设备都不会崩溃。如果我们不使用类功能,应用程序可以正常工作。我没有看到任何原因,所以如果有人知道为什么会这样,可能会有解决方案,请告诉我。

这可能是重复的,但在我执行的任何搜索中都没有显示。感谢社区,他们在stackoverflow已经找到了另一个类似的问题和答案。如果这是重复,我道歉。

1 个答案:

答案 0 :(得分:5)

这是一个地方问题。 DateFormatter取决于设备的当前位置设置,包括日期和时间。

您可以通过将其语言环境设置为en_US_POSIX来确保格式化程序的语言环境始终是静态的:

formatter.locale = Locale(identifier: "en_US_POSIX")

有关详细信息,请参阅Apple的链接:

https://developer.apple.com/documentation/foundation/nsdateformatter