the*_*end 4 cocoa nsdate nscalendar
如何检查特定日期是否存在?例如,如果我执行以下操作:
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setYear:2011];
[dateComponents setMonth:2];
[dateComponents setDay:29];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];
[dateComponents release];
NSLog(@"date: %@", date);
Run Code Online (Sandbox Code Playgroud)
我将在3月1日到达.我无法找到一个可以让这一点,我能做到这一点的唯一方法,就是通过创建NSDate的检查后,如果组件同意我订的东西
你可以使用这个-[NSDateFormatter dateFromString:]方法:
+ (BOOL)dateExistsYear:(int)year month:(int)month day:(int)day
{
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyyMMdd";
NSString* inputString = [NSString stringWithFormat:@"%4d%2d%2d",
year,month,day];
NSDate *date = [dateFormatter dateFromString:inputString];
return nil != date;
}
Run Code Online (Sandbox Code Playgroud)
如果您提供有效日期,那么dateFromString:将成功,否则,它将返回nil.