为什么在 iOS Swift 3 中尝试使用 dateFormatter 时得到 nil?

Why get nil when try to using dateFormatter in iOS Swift 3?

我尝试将字符串格式的日期转换为日期格式,如下所示:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"             
let date = dateFormatter.date(from: "2017-03-22")

但得到零值。

我设置

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

但不起作用...
请帮忙解决这个问题。

已解决

我加了

dateFormatter.calendar = Calendar(identifier: .gregorian)   

编写脚本并正常工作。

我想你的设备日历设置为不同于默认公历的设置,添加此行将解决问题:

dateFormatter.calendar = Calendar(identifier: .gregorian)

另外我注意到你的日期没有嵌入任何时区,如果你有一个固定的时区,也添加这一行:

dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
// Replace "UTC" with your desired timezone

最终代码是这样的:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"             
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let date = dateFormatter.date(from: "2017-03-22")