SashaZ'yi genişletmek için
Hızlı iOS 8 ve üstü Daha büyük veya daha küçük tarih karşılaştırmalarından daha fazlasına ihtiyacınız olduğunda. Örneğin, aynı gün mü yoksa önceki gün mü ...
Not: Saat dilimini asla unutmayın. Takvim saat diliminin bir varsayılanı vardır, ancak varsayılanı beğenmezseniz, saat dilimini kendiniz ayarlamanız gerekir. Hangi gün olduğunu bilmek için hangi saat diliminde sorduğunuzu bilmeniz gerekir.
extension Date {
func compareTo(date: Date, toGranularity: Calendar.Component ) -> ComparisonResult {
var cal = Calendar.current
cal.timeZone = TimeZone(identifier: "Europe/Paris")!
return cal.compare(self, to: date, toGranularity: toGranularity)
}
}
Şöyle kullanın:
if thisDate.compareTo(date: Date(), toGranularity: .day) == .orderedDescending {
// thisDate is a previous day
}
Daha karmaşık bir örnek. "FindThisDay" ile aynı gün olan bir dizideki tüm tarihleri bulun ve filtreleyin:
let formatter = DateFormatter()
formatter.timeZone = TimeZone(identifier: "Europe/Paris")
formatter.dateFormat = "yyyy/MM/dd HH:mm:ss"
let findThisDay = formatter.date(from: "2018/11/05 08:11:08")!
_ = [
formatter.date(from: "2018/12/05 08:08:08")!,
formatter.date(from: "2018/11/05 08:11:08")!,
formatter.date(from: "2018/11/05 11:08:22")!,
formatter.date(from: "2018/11/05 22:08:22")!,
formatter.date(from: "2018/11/05 08:08:22")!,
formatter.date(from: "2018/11/07 08:08:22")!,
]
.filter{ findThisDay.compareTo(date: $0 , toGranularity: .day) == .orderedSame }
.map { print(formatter.string(from: $0)) }