Das vom Geburtsdatum abgezogene Alter ist immer um einen inkonsistenten Betrag verschoben

Mit dem folgenden Code konvertiere ich ein vom Benutzer angegebenes Geburtsdatum in die entsprechenden Jahre ab dem aktuellen Datum. Die Ausgabe ist in Jahren immer um einen inkonsistenten Betrag und in Tagen und Monaten um eine sehr große Anzahl niedriger.

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);

Was wird ausgegeben, wenn ich eingebe?"06-16-1986" ist das Folgende

Jahre: 28, Tage: 9223372036854775807, Monate: 9223372036854775807

Das Jahr ist um 1 verschoben und die Monate und Tage produzieren extrem große Zahlen. Ich erhalte das gleiche Problem mit verschiedenen Daten. Zum Beispiel,"12-07-1989" produziert

Jahre: 25, Tage: 9223372036854775807, Monate: 9223372036854775807

Was mache ich hier falsch?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage