This is my code :
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
Why nil ? What am I doing wrong ?
Your problem is how you set the date format. Because there is a T
in your string, you need to "escape" it and say, that it shouldn't affect the formatting of the date.
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
Also as you see, I've changed the sss
to SSS
which stands for miliseconds and also changed the year YYYY
to lowercase yyyy
also the same with the DD
. You have to be really carefully, when to use upper and lowercase letters in your Dateformat-strings.
Check @HotLicks link in the comments which shows a great overview of the dateformat usage.
I know that it's to late, but
dateFormatter.dateFormat = "YYYY-MM-DD'T'HH:mm:ss.sss'Z'"
should be
dateFormatter.dateFormat = "YYYY-MM-DD'T'HH:mm:ss.SSS'Z'"
because,
1)
ss - seconds
SSS - fractional second
sss != SSS
2)
T -> 'T'; S -> 'S'
And nice tutorial