Возраст, извлеченный из даты рождения, всегда не совпадает

Я использую следующий код для преобразования предоставленной пользователем даты рождения в эквивалентные годы с текущей даты. Выход всегда отключен на непоследовательную величину в годах и очень большие числа в днях и месяцах.

NSDateFormatter *tempFormatter = [[NSDateFormatter alloc] init];
[tempFormatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"];
NSDate *birthDate = [tempFormatter dateFromString:[NSString stringWithFormat:@"%@-%@-%@ 01:00:00",self.birthYear.text,self.birthMonth.text,self.birthDay.text]];

NSDate* now = [NSDate date];
NSDateComponents* ageComponents = [[NSCalendar currentCalendar]
                                   components:NSYearCalendarUnit
                                   fromDate:birthDate
                                   toDate:now
                                   options:0];
NSInteger years = [ageComponents year];
NSInteger days = [ageComponents day];
NSInteger months = [ageComponents month];
NSLog(@"Years: %ld, Days: %ld, Months: %ld",years,days, months);

Что выводится при вводе"06-16-1986" является следующим

Годы: 28, Дни: 9223372036854775807, Месяцы: 9223372036854775807

Год выключен на 1, а месяцы и дни дают чрезвычайно большие цифры. Я получаю ту же проблему, используя разные даты. Например,"12-07-1989" производит

Годы: 25, Дни: 9223372036854775807, Месяцы: 9223372036854775807

Что я здесь не так делаю?

Ответы на вопрос(2)

Ваш ответ на вопрос