iPhone随机崩溃日期格式化



在我们的iPhone应用程序中,我们可以从API调用中解析一个日期。日期正确返回,是有效的日期。现在,只有在某些设备上,它会随着未包装可选值而出乎意料地发现的错误崩溃。这是所讨论的代码:

//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没有格式化,因为它是零。

常量。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上已经有了答案。我很抱歉这是重复的。

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

您可以通过将其设置为en_US_POSIX

来确保格式的网站始终是静态的
formatter.locale = Locale(identifier: "en_US_POSIX")

有关更多详细信息,请参见Apple的链接:

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

最新更新