В Swift 5 вы можете использовать одно из двух решений ниже, чтобы проверить, наступает ли дата между двумя другими датами.
№1. Использование DateInterval
«S contains(_:)
метод
DateInterval
имеет метод под названием contains(_:)
. contains(_:)
имеет следующее объявление:
func contains(_ date: Date) -> Bool
Указывает, содержит ли этот интервал указанную дату.
Следующий код игровой площадки показывает, как использовать 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
«S contains(_:)
метод
ClosedRange
имеет метод под названием contains(_:)
. contains(_:)
имеет следующее объявление:
func contains(_ element: Bound) -> Bool
Возвращает логическое значение, указывающее, содержится ли данный элемент в диапазоне.
Следующий код игровой площадки показывает, как использовать 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