Je travaille sur le développement iOS et je trouve qu'il est vraiment difficile de vérifier si deux NSDates proviennent du même jour. J'ai essayé d'utiliser ça
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)
mais il vérifie simplement si deux NSDates ont une différence de 24 heures. Je pense qu'il existe un moyen de le faire fonctionner, mais je souhaite quand même avoir des valeurs NSDate avant 2 heures du matin pour qu'elles soient comptées comme la veille, j'ai donc vraiment besoin d'aide ici. Merci!
NSCalendar a une méthode qui fait exactement ce que vous voulez réellement!
/*
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);
Vous l'utiliseriez donc comme ceci:
[[NSCalendar currentCalendar] isDate:date1 inSameDayAsDate:date2];
Ou en Swift
Calendar.current.isDate(date1, inSameDayAs:date2)
Vous devez comparer les composants de 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")
}
Ou plus court:
let diff = Calendar.current.dateComponents([.day], from: self, to: date)
if diff.day == 0 {
print("same day")
} else {
print("different day")
}