A quick example on ISO8601DateFormatter and sorted(by:) function
Thomas Mak wrote at 2018-10-14.
Here is an example of using ISO8601DateFormatter
and sorted(by:)
in Swift and iOS.
ISO 8601 is the YYYY-MM-DD format to represent date. In ISO8601DateFormatter
, Swift expects the time as well: YYYY-MM-DDTHH:MM:SSZ. If we simply need the date without the time, we can set the .withFullDate
format option.
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = .withFullDate
let date = dateFormatter.date(from: "2018-10-11")
Also, within an array of instances, we can sort them by a date type instant variable by using the sorted(by:)
function.
For example:
let students:[Student] = [
Student(enrolledAt: "2018-02-02"),
Student(enrolledAt: "2017-01-01"),
Student(enrolledAt: "2017-12-31")
]
students.sorted(by: {$0.enrolledAt > $1.enrolledAt})
Here is a full runnable example:
import Foundation
class Student {
var enrolledAt = Date()
init(enrolledAt:String) {
let dateFormatter = ISO8601DateFormatter()
dateFormatter.formatOptions = .withFullDate
self.enrolledAt = dateFormatter.date(from: enrolledAt)!
}
init() {
self.enrolledAt = Date()
}
}
let students:[Student] = [
Student(),
Student(enrolledAt: "2018-02-02"),
Student(enrolledAt: "2017-01-01"),
Student(enrolledAt: "2017-12-31")
]
students.sorted(by: {$0.enrolledAt > $1.enrolledAt})
students.sorted(by: {$0.enrolledAt < $1.enrolledAt})
Comments
no comments yet.