Convert swift date string

I have a date string in this format:

2016-06-20T13:01:46.457+02:00 

and I need to change it to something like this:

 20/06/2016 

I used to always use this library - > SwiftDate to manage dates, but now it doesn't work.

I also tried something like:

 let myDate = self.dateNoteDict[indexPath.row]! let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx" let date = dateFormatter.dateFromString(myDate) print("date -> \(date)") 

but that will not work. How can i do

Thanks in advance.

+11
source share
2 answers

ISO8601 standard date format with fractions of a second and time zone

YYYY-MM-dd'T'HH: mm: ss.SSSZ

 let myDate = "2016-06-20T13:01:46.457+02:00" let dateFormatter = NSDateFormatter() dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") // edited dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" let date = dateFormatter.dateFromString(myDate)! dateFormatter.dateFormat = "dd/MM/yyyy" let dateString = dateFormatter.stringFromDate(date) 

Swift 3:

 let myDate = "2016-06-20T13:01:46.457+02:00" let dateFormatter = DateFormatter() dateFormatter.locale = Locale(identifier: "en_US_POSIX") // edited dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" let date = dateFormatter.date(from:myDate)! dateFormatter.dateFormat = "dd/MM/yyyy" let dateString = dateFormatter.string(from:date) 

On macOS 10. 13+ iOS 11+ ISO8601DateFormatter is an alternative as an input formatter

 let myDate = "2016-06-20T13:01:46.457+02:00" let inputFormatter = ISO8601DateFormatter() inputFormatter.formatOptions = [.withFullDate, .withFullTime, .withFractionalSeconds] let date = dateFormatter.date(from:myDate)! let outputFormatter = DateFormatter() outputFormatter.locale = Locale(identifier: "en_US_POSIX") outputFormatter.dateFormat = "dd/MM/yyyy" let dateString = dateFormatter.string(from:date) 
+25
source

I always use this code when converting String to Date . ( Swift 3 )

 extension String { func toDate( dateFormat format : String) -> Date { let dateFormatter = DateFormatter() dateFormatter.dateFormat = format if let date = dateFormatter.date(from: self) { return date } print("Invalid arguments ! Returning Current Date . ") return Date() } } 

and just call.,

 print ( "2016-06-20T13:01:46.457+02:00".toDate(dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZ") ) //Capital HH for 24-Hour Time 
+4
source

All Articles