Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if two NSDates are from the same day [duplicate]

Tags:

ios

swift

nsdate

I am working on ios development and I find it really hard to check if two NSDates are from the same day. I tried to use this

   fetchDateList()     // Check date     let date = NSDate()     // setup date formatter     let dateFormatter = NSDateFormatter()     // set current time zone     dateFormatter.locale = NSLocale.currentLocale()      let latestDate = dataList[dataList.count-1].valueForKey("representDate") as! NSDate     //let newDate = dateFormatter.stringFromDate(date)     let diffDateComponent = NSCalendar.currentCalendar().components([NSCalendarUnit.Year, NSCalendarUnit.Month, NSCalendarUnit.Day], fromDate: latestDate, toDate: date, options: NSCalendarOptions.init(rawValue: 0))     print(diffDateComponent.day) 

but it just checks if two NSDates has a difference of 24 hours. I think there is a way to make it work but still, I wish to have NSDate values before 2 am in the morning to be count as the day before, so I definitely need some help here. Thanks!

like image 440
JoshJoshJosh Avatar asked May 25 '16 02:05

JoshJoshJosh


1 Answers

NSCalendar has a method that does exactly what you want actually!

/*     This API compares the Days of the given dates, reporting them equal if they are in the same Day. */ - (BOOL)isDate:(NSDate *)date1 inSameDayAsDate:(NSDate *)date2 NS_AVAILABLE(10_9, 8_0); 

So you'd use it like this:

[[NSCalendar currentCalendar] isDate:date1 inSameDayAsDate:date2]; 

Or in Swift

Calendar.current.isDate(date1, inSameDayAs:date2) 
like image 135
Catfish_Man Avatar answered Sep 23 '22 06:09

Catfish_Man