Date
є Comparable
& Equatable
(станом на Swift 3)
Ця відповідь доповнює відповідь @Ankit Thakur.
Починаючи з Swift 3, Date
структура (заснована на базовому NSDate
класі) приймає протоколи Comparable
and Equatable
.
Comparable
вимагає , щоб Date
реалізувати оператори: <
, <=
, >
, >=
.
Equatable
вимагає Date
виконання ==
оператора.
Equatable
дозволяє Date
використовувати реалізацію !=
оператора за замовчуванням (що є оберненою до Equatable
==
реалізації оператора).
Наступний зразок коду використовує ці оператори порівняння та підтверджує, які порівняння відповідають дійсності з print
твердженнями.
Функція порівняння
import Foundation
func describeComparison(date1: Date, date2: Date) -> String {
var descriptionArray: [String] = []
if date1 < date2 {
descriptionArray.append("date1 < date2")
}
if date1 <= date2 {
descriptionArray.append("date1 <= date2")
}
if date1 > date2 {
descriptionArray.append("date1 > date2")
}
if date1 >= date2 {
descriptionArray.append("date1 >= date2")
}
if date1 == date2 {
descriptionArray.append("date1 == date2")
}
if date1 != date2 {
descriptionArray.append("date1 != date2")
}
return descriptionArray.joined(separator: ", ")
}
Зразок використання
let now = Date()
describeComparison(date1: now, date2: now.addingTimeInterval(1))
// date1 < date2, date1 <= date2, date1 != date2
describeComparison(date1: now, date2: now.addingTimeInterval(-1))
// date1 > date2, date1 >= date2, date1 != date2
describeComparison(date1: now, date2: now)
// date1 <= date2, date1 >= date2, date1 == date2
let d1 = Date() ; let d2 = Date() ; if d1 > d2 { }
працює в моєму Xcode 8 beta 6.