I get nil when using NSDateFormatter in swift

2020-03-30 06:52发布

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 ?

2条回答
我命由我不由天
2楼-- · 2020-03-30 07:08

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

查看更多
姐就是有狂的资本
3楼-- · 2020-03-30 07:21

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.

查看更多
登录 后发表回答