刚写的,没容错
//获得年龄,key = year,month,day
+(NSMutableDictionary*)ageForBirthDay:(NSDate*)birthDay
{
NSMutableDictionary * dict = [NSMutableDictionary dictionaryWithCapacity:0];
// 出生日期转换 年月日
NSDateComponents *components1 = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:birthDay];
NSInteger birthDateYear = [components1 year];
NSInteger birthDateDay = [components1 day];
NSInteger birthDateMonth = [components1 month];
// 获取系统当前 年月日
NSDateComponents *components2 = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
NSInteger currentDateYear = [components2 year];
NSInteger currentDateDay = [components2 day];
NSInteger currentDateMonth = [components2 month];
// 计算岁
NSInteger year = currentDateYear - birthDateYear - 1;
if ((currentDateMonth > birthDateMonth) || (currentDateMonth == birthDateMonth && currentDateDay >= birthDateDay)) {
year++;
}
//岁
[dict setObject:[NSNumber numberWithInteger:year] forKey:@"year"];
//计算月
NSInteger month = 0;
if (currentDateMonth >= birthDateMonth)
{
month = currentDateMonth - birthDateMonth;
if (currentDateDay < birthDateDay)
{
month--;
}
}
else if (currentDateMonth < birthDateMonth)
{
month = 12 - birthDateMonth - currentDateMonth;
if (currentDateDay < birthDateDay)
{
month--;
}
}
[dict setObject:[NSNumber numberWithInteger:month] forKey:@"month"];
//计算日
NSInteger day = 0;
if (currentDateDay >= birthDateDay)
{
day = currentDateDay - birthDateDay;
}
else if (currentDateDay < birthDateDay)
{
day = currentDateDay;
}
[dict setObject:[NSNumber numberWithInteger:day] forKey:@"day"];
return dict;
}