সাশাজেডে প্রসারিত করা
আপনি যখন বড় বা ছোট তারিখের তুলনায় কেবল বেশি প্রয়োজন তখন আইওএস 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
}
আরও জটিল উদাহরণ। একটি অ্যারেতে সমস্ত তারিখগুলি সন্ধান করুন এবং ফিল্টার করুন, যা একই দিন থেকে "ফাইন্ডথিসডে" হিসাবে রয়েছে:
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)) }