Sort Objects in Array by date Sort Objects in Array by date swift swift

Sort Objects in Array by date


Using Swift 4 & Swift 3

let testArray = ["25 Jun, 2016", "30 Jun, 2016", "28 Jun, 2016", "2 Jul, 2016"]var convertedArray: [Date] = []var dateFormatter = DateFormatter()dateFormatter.dateFormat = "dd MM, yyyy"// yyyy-MM-dd"for dat in testArray {    let date = dateFormatter.date(from: dat)    if let date = date {        convertedArray.append(date)    }}var ready = convertedArray.sorted(by: { $0.compare($1) == .orderedDescending })print(ready)

Using Swift 2

For example you have the array with dates and another 1 array, where you will save the converted dates:

var testArray = ["25 Jun, 2016", "30 Jun, 2016", "28 Jun, 2016", "2 Jul, 2016"]var convertedArray: [NSDate] = []

After that we convert the dates:

var dateFormatter = NSDateFormatter()dateFormatter.dateFormat = "dd MM, yyyy"// yyyy-MM-dd"for dat in testArray {    var date = dateFormatter.dateFromString(dat)    convertedArray.append(date!)}

And the result:

var ready = convertedArray.sort({ $0.compare($1) == .OrderedDescending })print(ready)


For Swift 3

var testArray = ["25 Jun, 2016", "30 Jun, 2016", "28 Jun, 2016", "2 Jul, 2016"]var convertedArray: [Date] = []var dateFormatter = DateFormatter()dateFormatter.dateFormat = "dd/MM/yyyy"for dat in testArray {    var date = dateFormatter.date(from: dat)    convertedArray.append(date!)}//Approach : 1convertedArray.sort(){$0 < $1}    //Approach : 2convertedArray.sorted(by: {$0.timeIntervalSince1970 < $1.timeIntervalSince1970})print(convertedArray)


Avoiding extra variable of convertedArray

Using Swift 4 & Swift 3

let testArray = ["25 Jun, 2016", "30 Jun, 2016", "28 Jun, 2016", "2 Jul, 2016"]var dateFormatter = DateFormatter()dateFormatter.dateFormat = "dd MM, yyyy"// yyyy-MM-dd"var ready = convertedArray.sorted(by: { dateFormatter.date(from:$0).compare(dateFormatter.date(from:$1)) == .orderedDescending })print(ready)