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

时间:2016-05-30 08:05:53

标签: ios swift nsdate

我正在将日期字符串转换为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

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

3 个答案:

答案 0 :(得分:1)

你几乎拥有它 - 只需要逃脱'Z':

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

答案 1 :(得分:1)

2016-05-18T14:00:54.466Z中有print(strDate)个 所以,您的格式应为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))

答案 2 :(得分:1)

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

ZX之间的差异基本上是X允许在时间偏移为零时使用文字Z.见Date Field Symbol Table

当然,你也错过了毫秒部分(.SSS)。如果你有两种格式,一种是毫秒,一种是毫秒,你必须使用两种不同的格式化器。