Date
is 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で動作します