Swift Dateformatting仅在特定日期失败

时间:2016-10-15 21:09:17

标签: ios swift

今天,一个非常奇怪的错误(或者我相信)开始发生。这是一段代码:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateObj = dateFormatter.dateFromString(serviceDate)
dateFormatter.dateFormat = "dd/MM/yyyy"
let serviceDateBr = dateFormatter.stringFromDate(dateObj!)

现在出现了奇怪的部分。例如,当我设置serviceDate =“2016-10-15”时,它可以工作:

let serviceDate = "2016-10-15"
...
print("dateSQL: \(serviceDate), dateBR: \(serviceDateBr)")
--------
Answer = dateSQL: 2016-10-15, dateBR: 15/10/2016

另一方面,当我将serviceDate更改为“2016-10-16”时,它崩溃了。不是在第17天,第18天或任何其他。只有16岁。

let serviceDate = "2016-10-16"
...
print("dateSQL: \(serviceDate), dateBR: \(serviceDateBr)")
--------
Answer = fatal error: unexpectedly found nil while unwrapping an Optional value

我已经知道,当第一个格式化失败时,会发生这个致命错误,返回nil,然后我尝试强制将其解包到stringFromDate()上。但我不明白为什么它首先失败了。任何人都可以帮助我吗?

如果相关,我使用的是Xcode 7.3.1。这个错误发生在设备和模拟器上。

非常感谢。

2 个答案:

答案 0 :(得分:2)

我想你住在巴西。

2016年10月16日,夏令时发生变化,没有0:00。

答案 1 :(得分:0)

我试过Xcode 7.3,看起来工作正常,结果

dateSQL: 2016-10-15, dateBR: 15/10/2016

云你提供了更多信息吗?