在我们的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