Với Swift 5, bạn có thể sử dụng một trong hai giải pháp dưới đây để kiểm tra xem một ngày có xảy ra giữa hai ngày khác hay không.
# 1. Sử dụng DateInterval
's contains(_:)
phương pháp
DateInterval
có một phương thức được gọi contains(_:)
. contains(_:)
có khai báo sau:
func contains(_ date: Date) -> Bool
Cho biết khoảng thời gian này có chứa ngày nhất định hay không.
Mã Playground sau đây cho biết cách sử dụng contains(_:)
để kiểm tra xem một ngày có xảy ra giữa hai ngày khác hay không:
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. Sử dụng ClosedRange
's contains(_:)
phương pháp
ClosedRange
có một phương thức được gọi contains(_:)
. contains(_:)
có khai báo sau:
func contains(_ element: Bound) -> Bool
Trả về một giá trị Boolean cho biết liệu phần tử đã cho có nằm trong phạm vi hay không.
Mã Playground sau đây cho biết cách sử dụng contains(_:)
để kiểm tra xem một ngày có xảy ra giữa hai ngày khác hay không:
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