Search code examples
iosiphoneswiftnsdateformatterdateformatter

Can't find the right date formatter (DateFormatter) in iphone


I am getting date string from server like that "2017-08-05T00:30:00.000+02:00". Below is my code for date formatter.

 let dateFormatter: DateFormatter = DateFormatter()
 let serverDateString = "2017-08-05T00:30:00.000+02:00"
 dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZZ"
 dateFormatter.locale = Foundation.Locale(identifier: "en_US_POSIX")
 let currentDate: Date = dateFormatter.date(from: serverDateString)!

But it returns 2017-08-04 22:30:00 +0000. Which is wrong. Any suggestions?


Solution

  • In Swift 3 You can change your server time string to UTC time Date as:

    let dateFormatter: DateFormatter = DateFormatter()
    var serverDateString = "2017-08-05T00:30:00.000+02:00"
    let index = serverDateString.index(serverDateString.startIndex, offsetBy: 19)
    serverDateString = serverDateString.substring(to: index)
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    dateFormatter.timeZone = TimeZone.init(identifier: "UTC")
    let currentDate: Date = dateFormatter.date(from: serverDateString)!