比较两个 NSDate 的最有效/推荐的方法是什么?我希望能够查看两个日期是否在同一天,无论时间如何,并且已经开始编写一些代码,这些代码使用 NSDate 类中的 timeIntervalSinceDate: 方法并获取该值的整数除以秒数一天内。这似乎很啰嗦,我觉得我错过了一些明显的东西。
我要修复的代码是:
if (!([key compare:todaysDate] == NSOrderedDescending))
{
todaysDateSection = [eventSectionsArray count] - 1;
}
其中 key 和 todaysDate 是 NSDate 对象,而 todaysDate 正在使用:
NSDate *todaysDate = [[NSDate alloc] init];
问候
戴夫
最佳答案
令我惊讶的是,没有其他答案具有此选项来获取对象的“一天的开始”日期:
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date1 interval:NULL forDate:date1];
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date2 interval:NULL forDate:date2];
将 date1
和 date2
设置为各自日期的开始。如果它们相等,则它们在同一天。
或者这个选项:
NSUInteger day1 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit: forDate:date1];
NSUInteger day2 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitEra forDate:date2];
将 day1
和 day2
设置为可以比较的任意值。如果它们相等,则它们在同一天。
关于iphone - 比较两个 NSDate 并忽略时间分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854890/