साशज़ पर विस्तार करने के लिए
IOS 8 और ऊपर स्विफ्ट करें जब आपको केवल बड़ी या छोटी तारीख की तुलना में अधिक की आवश्यकता होती है। उदाहरण के लिए यह उसी दिन या पिछले दिन है, ...
नोट: टाइमजोन को कभी न भूलें। कैलेंडर टाइमज़ोन में एक डिफ़ॉल्ट है, लेकिन यदि आप डिफ़ॉल्ट को पसंद नहीं करते हैं, तो आपको स्वयं को टाइमज़ोन सेट करना होगा। यह जानने के लिए कि यह किस दिन है, आपको यह जानने की जरूरत है कि आप किस समय में पूछ रहे हैं।
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)
}
}
इसे इस तरह उपयोग करें:
if thisDate.compareTo(date: Date(), toGranularity: .day) == .orderedDescending {
// thisDate is a previous day
}
अधिक जटिल उदाहरण का। सरणी में सभी तिथियों को ढूंढें और फ़िल्टर करें, जो उसी दिन से हैं जैसे "findThisDay":
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)) }