Dateis Comparable&Equatable(Swift 3以降)
この回答は、@ Ankit Thakurの回答を補足するものです。
Swift 3以降、Date構造体(基になるNSDateクラスに基づく)はComparableおよび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ベータ6で動作します