请检查:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:date2];
NSDate *date2New = [calendar dateFromComponents:components];
components = [calendar components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:date3];
NSDate *date3New = [calendar dateFromComponents:components];
if([date2New isEqualToDate:date3New])
{
//do stuffs
}
我认为您的代码中的问题是, isEqualToDate: 将检查完全相同的日期(亚秒级差异也会导致条件失败)
根据NSDate:
isEqualToDate:
返回一个布尔值,指示给定对象是否是 NSDate 对象并且完全等于接收者。
- (BOOL)isEqualToDate:(NSDate *)anotherDate
参数
另一个日期
The date to compare with the receiver.
返回值
如果 anotherDate 是一个 NSDate 对象并且完全等于接收者,则为 YES,否则为 NO。
讨论
此方法检测日期之间的亚秒级差异。如果要比较粒度较小的日期,请使用 timeIntervalSinceDate: 比较两个日期。