如何检查两个NSDate是否来自同一天

我正在开发ios,我发现真的很难检查两个NSDate是否来自同一天。 我试图用这个

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) 

但它只是检查两个NSDates是否有24小时的差异。 我认为有一种方法可以使它工作,但是,我希望在凌晨2点之前将NSDate的值作为前一天计算,所以我在这里肯定需要一些帮助。 谢谢!

NSCalendar有一个方法,确实实际上你想要的!

 /* 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); 

所以你会这样使用它:

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

或者在Swift中

 Calendar.current.isDate(date1, inSameDayAs:date2) 

你应该比较date组件:

 let date1 = NSDate(timeIntervalSinceNow: 0) let date2 = NSDate(timeIntervalSinceNow: 3600) let components1 = NSCalendar.currentCalendar().components([.Year, .Month, .Day], fromDate: date1) let components2 = NSCalendar.currentCalendar().components([.Year, .Month, .Day], fromDate: date2) if components1.year == components2.year && components1.month == components2.month && components1.day == components2.day { print("same date") } else { print("different date") } 

或更短:

 let diff = Calendar.current.dateComponents([.day], from: self, to: date) if diff.day == 0 { print("same day") } else { print("different day") }