如何检查特定日期是否存在?

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的检查后,如果组件同意我订的东西

dre*_*wag 8

你可以使用这个-[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.

  • 这样可行.虽然使用"%04d%02d%02d"来对数字进行零填充. (2认同)