これで確認してください:
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: がまったく同じ日付をチェックすることだと思います(1秒未満の違いも条件が失敗する原因になります)
NSDateによると:
isEqualToDate:
指定されたオブジェクトが NSDate オブジェクトであり、レシーバーと正確に等しいかどうかを示すブール値を返します。
- (BOOL)isEqualToDate:(NSDate *)anotherDate
パラメーター
別の日付
The date to compare with the receiver.
戻り値
anotherDate が NSDate オブジェクトであり、レシーバーと正確に等しい場合は YES、そうでない場合は NO。
討論
このメソッドは、日付間の 1 秒未満の差を検出します。より細かい精度で日付を比較したい場合は、timeIntervalSinceDate: を使用して 2 つの日付を比較します。