Подтвердить что ты не робот

Создание 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];

Однако _date выводит следующее, когда день = 24, месяц = ​​8, год = 2011:

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

Я должен делать что-то ужасно неправильно, но я понятия не имею, что. Кто-нибудь знает, что может произойти?

4b9b3361

Ответ 1

У вас есть опечатка в вашем коде: (последняя строка должна быть setYear:)

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

Ответ 2

Вы вызываете setMonth дважды, второй раз со значением за год. Должно быть:

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

Ответ 3

Один вопиющий глюк:

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