从日,月和年生成NSDate

我试图从一个月和一年(所有的整数格式)生成一个NSDate。

现在我的尝试是这样的:

NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; NSNumber *day = [dataSource valueForKey:@"day"]; NSNumber *month = [dataSource valueForKey:@"month"]; NSNumber *year = [dataSource valueForKey:@"year"]; [components setDay:[day intValue]]; [components setMonth:[month intValue]]; [components setMonth:[year intValue]]; NSDate *_date = [calendar dateFromComponents:components]; 

但是,当日= 24,月= 8,年= 2011时, _date输出以下内容:

0168-07-25 04:56:02 +0000

我一定在做一些可怕的错误,但我不知道是什么。 任何人都知道可能会发生什么?

你的代码中有一个错字:(最后一行应该是setYear:

  [components setDay:[day intValue]]; [components setMonth:[month intValue]]; [components setYear:[year intValue]]; 

您正在调用setMonth两次,第二次使用年份的值。 应该:

 [components setDay:[day intValue]]; [components setMonth:[month intValue]]; [components setYear:[year intValue]]; 

一个明显的小故障是:

 [components setMonth:[year intValue]]; //setting month with year!