Để so sánh 2 đối tượng Date (trước là NSDate) trong Swift, dùng phương thức compare(_:) trả về ComparisonResult.
Tạo 2 Date để so sánh
let calendar = Calendar.current
var comp1 = DateComponents()
comp1.day = 5; comp1.month = 6; comp1.year = 1993
let date1 = calendar.date(from: comp1)! // 5/6/1993
var comp2 = DateComponents()
comp2.day = 4; comp2.month = 2; comp2.year = 1995
let date2 = calendar.date(from: comp2)! // 4/2/1995
So sánh bằng compare(_:)
let result = date2.compare(date1)
switch result {
case .orderedAscending:
print("date1 > date2 (date2 sớm hơn)")
case .orderedDescending:
print("date1 < date2 (date2 muộn hơn)")
case .orderedSame:
print("Hai date bằng nhau")
}
Kết quả

3 giá trị ComparisonResult
.orderedAscending: left < right (left xảy ra trước/sớm hơn)..orderedDescending: left > right (left xảy ra sau/muộn hơn)..orderedSame: left == right (cùng thời điểm).
Cách tiện lợi hơn (Swift)
// So sánh trực tiếp với toán tử (Date conform Comparable)
if date1 < date2 { print("date1 sớm hơn date2") }
if date1 > date2 { print("date1 muộn hơn date2") }
if date1 == date2 { print("Cùng lúc") }
// Kiểm tra khoảng cách
let interval = date2.timeIntervalSince(date1) // Giây
let days = interval / 86400
Lưu ý
Datetrong Swift là struct (value type),NSDatelà class (reference type) – bridged tự động.- So sánh
Datebao gồm cả giờ/phút/giây. Nếu chỉ so sánh ngày, hãy normalize về 00:00:00 dùngCalendar.current.startOfDay(for:). timeIntervalSinceReferenceDatehoặctimeIntervalSince1970cho timestamp Unix.