如何检查几年前用户选择的NSDate是否发生过?

时间:2011-02-28 15:41:40

标签: iphone nsdate nscalendar

在我的应用程序中,我需要检查用户是否已满18岁。我为他提供了UIDatePickerView,并选择了他的生日日期。我将它存储在NSDate字段中。 如何检查自生日以来已经过去18年了?

2 个答案:

答案 0 :(得分:10)

[[[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:birthDate toDate:[NSDate date] options:0] year]

Jonathan Grynspan指出,这会更好:

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

答案 1 :(得分:-2)

应该用类似的东西来完成:

    NSTimeInterval interval = [birthday timeIntervalSinceNow];

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