在swift中使用NSDateFormatter时我得到了nil

时间:2015-02-26 18:29:58

标签: ios swift nsdate 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

为什么没有?我做错了什么?

2 个答案:

答案 0 :(得分:7)

您的问题是如何设置日期格式。因为字符串中有T,所以您需要" escape"并且说,它不应该影响日期的格式。

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

同样如您所见,我已将sss更改为SSS代表毫秒,并将年YYYY更改为小写yyyy也是相同的使用DD。您必须非常小心,何时在Dateformat字符串中使用大写和小写字母。

检查@HotLicks link in the comments,其中显示了dateformat用法的精彩概述。

答案 1 :(得分:1)

我知道这已经很晚了,但是

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'

nice tutorial