如何将string转换为NSDate?

我有我收到的string,每当有新的远程通知。我使用parsing我的后端。 和我检索的string来自“createdAt”列。

我试过下面的代码:

var ca = "2015-07-03T03:16:17.220Z" var dateFormater : NSDateFormatter = NSDateFormatter() dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'" let date = dateFormater.dateFromString(ca) println(date) 

但是println给我零,我认为我的date格式有问题。 我怎样才能解决这个问题?

你错过了毫秒。 从而:

 dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

请注意,从datestring转换为NSDate ,不应该引用Z 如果引用Z ,它将匹配字面上的Z字符,但不能正确反映这个datestring实际上是Zulu / GMT / UTC。


如果你想创build格式化程序,也可以将NSDate对象转换为string,那么你应该引用Z ,但是在这种情况下,你必须记得明确设置时区:

 dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" dateFormater.timeZone = NSTimeZone(forSecondsFromGMT: 0) 

顺便说一句,不要忘记设置苹果技术问答1480的locale

 dateFormater.locale = NSLocale(localeIdentifier: "en_US_POSIX")