+(BOOL)dateExistsYear:(int)year month:(int)month day:(int)day{ NSDateComponents *components = [[NSDateComponents alloc] init]; [components setYear:year]; [components setMonth:month]; [components setDay:day]; NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:components]; [components release]; components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:date]; if([components year] != year || [components month] != month || [components day] != day){ return NO; } else{ return YES; } }
I checked the existence of all days from January 1, 2000 to December 12, 2012.
2011-04-28 11: 42: 57.130 Test [1543: 903] interval 1.103822 // using the above function
2011-04-28 11: 42: 59.498 Test [1543: 903] interval 2.367271 // using dateformatter
Check components even faster.
source share