我的代表一个人的类有一个方法来计算该人的年龄:
@interface Student : NSObject
@property (strong) NSDate *dob;
// This method will work out the person's age in calendar years
- (NSDateComponents*)ageCalculation:(NSDate*)dob;
这是类实现文件
@implementation Student
- (NSDateComponents*)ageCalculation:(NSDate*)dob {
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit units = NSYearCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *components = [calendar components:units
fromDate:dob
toDate:now
options:0];
return components;
}
@end
不过,我不确定我这样做是否正确:
Student *student1 = [[Student alloc] init];
[student1 setDob:aDateOfBirth];
NSDateComponents *ageComponents = [student1 ageCalculation:aDateOfBirth];
我应该如何处理这个方法的结果?如何让 ageCalculation:
使用我已经设置的日期?
最佳答案
有几件事需要注意。首先,计算年龄的代码很好,只是我不明白为什么你返回 NSDateComponents
而不仅仅是以岁为单位的年龄。
我会这样做
- (NSInteger)age {
NSDate *today = [NSDate date];
NSDateComponents *ageComponents = [[NSCalendar currentCalendar]
components:NSYearCalendarUnit
fromDate:self.dob
toDate:today
options:0];
return ageComponents.year;
}
您只对 year
组件感兴趣,因此返回它而不是 NSDateComponents
。使用 self.dob
而不是参数来获取您之前设置的日期。
关于objective-c - 使用两个 NSDate 计算一个人的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468515/