Avec Swift 5, vous pouvez utiliser l'une des deux solutions ci-dessous afin de vérifier si une date survient entre deux autres dates.
#1. Utilisation de DateInterval
la contains(_:)
méthode de
DateInterval
a une méthode appelée contains(_:)
. contains(_:)
a la déclaration suivante:
func contains(_ date: Date) -> Bool
Indique si cet intervalle contient la date donnée.
Le code Playground suivant montre comment utiliser contains(_:)
pour vérifier si une date se produit entre deux autres dates:
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. Utilisation de ClosedRange
la contains(_:)
méthode de
ClosedRange
a une méthode appelée contains(_:)
. contains(_:)
a la déclaration suivante:
func contains(_ element: Bound) -> Bool
Renvoie une valeur booléenne indiquant si l'élément donné est contenu dans la plage.
Le code Playground suivant montre comment utiliser contains(_:)
pour vérifier si une date se produit entre deux autres dates:
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