在swift中使用NSDateFormatter时,我得到零

这是我的代码:

println(myStringDate) // 2015-02-26T17:46:34.000Z let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "YYYY-MM-DDTHH:mm:ss.sssZ" let myDate = dateFormatter.dateFromString(myStringDate) println(myDate) // nil 

为什么零? 我究竟做错了什么 ?

你的问题是你如何设置date格式。 因为在你的string中有一个T ,你需要“逃避”它并且说它不应该影响date的格式。

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

也正如你所看到的,我已经把sss改成了SSS ,代表了毫秒,也把YYYY改成了小写yyyy也和DD 。 在Dateformatstring中使用大写和小写字母时,必须非常小心。

在评论中检查@HotLicks链接,其中显示dateformat用法的一个很好的概述。

我知道要迟到了,但是

 dateFormatter.dateFormat = "YYYY-MM-DD'T'HH:mm:ss.sss'Z'" 

应该

 dateFormatter.dateFormat = "YYYY-MM-DD'T'HH:mm:ss.SSS'Z'" 

因为,

1)

 ss - seconds SSS - fractional second sss != SSS 

2)

  T -> 'T'; S -> 'S' 

和不错的教程