Как проверить, произошло ли выбранное пользователем NSDate несколько лет назад? - PullRequest
2 голосов
/ 28 февраля 2011

В моем приложении мне нужно проверить, исполнилось ли 18 лет пользователю. Я предоставляю ему UIDatePickerView, и он выбирает дату своего дня рождения. Я храню его в поле NSDate. Как проверить, прошло ли уже 18 лет со дня его рождения?

Ответы [ 2 ]

10 голосов
/ 28 февраля 2011
[[[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:birthDate toDate:[NSDate date] options:0] year]

или, как указал Джонатан Гринспан , это было бы лучше:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
int years = [[gregorian components:NSYearCalendarUnit fromDate:birthDate toDate:[NSDate date] options:0] year];
[gregorian release];

и теперь с ARC это может быть (слишком) кратко:

int years = [[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] components:NSYearCalendarUnit fromDate:birthDate toDate:[NSDate date] options:0] year];
0 голосов
/ 28 февраля 2011

Это должно быть сделано с чем-то вроде этого:

    NSTimeInterval interval = [birthday timeIntervalSinceNow];

if (interval > 18*365*24*60*60) {
    NSLog(@"You're more than 18");
}
...