Date
เป็น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))
describeComparison(date1: now, date2: now.addingTimeInterval(-1))
describeComparison(date1: now, date2: now)
let d1 = Date() ; let d2 = Date() ; if d1 > d2 { }
ทำงานใน Xcode 8 beta 6 ของฉัน