Dzięki Swift 5 możesz użyć jednego z dwóch poniższych rozwiązań, aby sprawdzić, czy data przypada między dwiema innymi datami.
# 1. Korzystanie DateInterval
z contains(_:)
metody
DateInterval
ma metodę o nazwie contains(_:)
. contains(_:)
posiada następującą deklarację:
func contains(_ date: Date) -> Bool
Wskazuje, czy ten przedział zawiera podaną datę.
Poniższy kod Playground pokazuje, jak używać contains(_:)
, aby sprawdzić, czy data występuje między dwiema innymi datami:
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. Korzystanie ClosedRange
z contains(_:)
metody
ClosedRange
ma metodę o nazwie contains(_:)
. contains(_:)
posiada następującą deklarację:
func contains(_ element: Bound) -> Bool
Zwraca wartość logiczną wskazującą, czy dany element znajduje się w zakresie.
Poniższy kod Playground pokazuje, jak używać contains(_:)
, aby sprawdzić, czy data występuje między dwiema innymi datami:
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