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?