如何在 Swift2 2.0 中将字符串转换为日期

How to convert a string to Date in Swift2 2.0

我正在努力将日期字符串转换为 NSDate,但我不断收到 nil:

let strDate = self.DateList[0] // "2015-10-06T15:42:34Z"
print(strDate)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
print (dateFormatter.dateFromString(strDate))

而 运行 结果是:

2016-05-18T14:00:54.466Z
nil

我不知道为什么,有什么建议吗?

您几乎成功了 - 只需要逃出 'Z':

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"

您在 print(strDate)
中获得了 2016-05-18T14:00:54.466Z 所以,你的格式应该是 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
//--------------------------------2016-05-18 T 14:00:54.466 Z ----

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"  
print (dateFormatter.dateFromString(strDate))

更安全的解决方案是使用 ZZZZZ 作为时区说明符,或者您可以使用 X 说明符。

ZX 之间的区别基本上是 X 允许在时间偏移为零时使用文字 Z。参见 Date Field Symbol Table

当然,您还缺少毫秒部分 (.SSS)。如果你有两种格式,一种有毫秒,一种没有毫秒,你将不得不使用两种不同的格式化程序。