使用 Swift 5,您可以使用以下两种解决方案之一来检查日期是否介于其他两个日期之间。
#1。使用DateInterval的contains(_:)方法
DateInterval 有一个名为contains(_:) 的方法。 contains(_:) 有以下声明:
func contains(_ date: Date) -> Bool
指示此间隔是否包含给定日期。
以下 Playground 代码展示了如何使用 contains(_:) 来检查某个日期是否介于其他两个日期之间:
import Foundation
let calendar = Calendar.current
let startDate = calendar.date(from: DateComponents(year: 2010, month: 11, day: 22))!
let endDate = calendar.date(from: DateComponents(year: 2015, month: 5, day: 1))!
let myDate = calendar.date(from: DateComponents(year: 2012, month: 8, day: 15))!
let dateInterval = DateInterval(start: startDate, end: endDate)
let result = dateInterval.contains(myDate)
print(result) // prints: true
#2。使用ClosedRange的contains(_:)方法
ClosedRange 有一个名为contains(_:) 的方法。 contains(_:) 有以下声明:
func contains(_ element: Bound) -> Bool
返回一个布尔值,指示给定元素是否包含在范围内。
以下 Playground 代码显示了如何使用 contains(_:) 来检查某个日期是否介于其他两个日期之间:
import Foundation
let calendar = Calendar.current
let startDate = calendar.date(from: DateComponents(year: 2010, month: 11, day: 22))!
let endDate = calendar.date(from: DateComponents(year: 2015, month: 5, day: 1))!
let myDate = calendar.date(from: DateComponents(year: 2012, month: 8, day: 15))!
let range = startDate ... endDate
let result = range.contains(myDate)
//let result = range ~= myDate // also works
print(result) // prints: true