Search code examples
javascriptjsonswiftdatensdate

Swift - Converting JSON date to Swift compatible date


I am trying to convert a date in which the javascript code is generating the current date using the Date() function. But when I print it out, I am getting nil.

my code:

        let date2 = data?[0] as! String
        println(date2)

        var str = "2013-07-21T19:32:00Z"

        var dateFor: NSDateFormatter = NSDateFormatter()
        dateFor.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"

        var Date: NSDate? = dateFor.dateFromString(date2)

        println(Date) 

date2 => is printing out 2015-05-15T21:58:00.066Z Date => is printing nil str is just for testing and works perfectly.

Anyone see any flaws in the code?


Solution

  • The issue is that str and date2 two are not the same date format. str format is "yyyy-MM-dd'T'HH:mm:ssZ" while date2 format is "yyyy-MM-dd'T'HH:mm:ss.SSSZ". Besides that you should always set your dateFormatter's locale to "en_US_POSIX" when parsing fixed-format dates:

    let date2 = "2015-05-15T21:58:00.066Z"
    
    let dateFormatter = DateFormatter()
    dateFormatter.locale = .init(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    if let date = dateFormatter.date(from: date2) {
        print(date)  // "2015-05-15 21:58:00 +0000"
    }