iOS 根据身份证号获取出生日期,并计算年龄

根据身份证号获取出生日期,并计算年龄: 90与00后均可计算

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *str = @"611421199308261248"; //号码根据规则随便编的

    //获取出生日期
    NSString *dateStr = [self subsIDStrToDate:str];
     NSLog(@"dateStr == %@",dateStr);
   
    //获取年龄
    NSString *ageStr = [self calculateAgeStr:str];
    NSLog(@"ageStr == %@",ageStr);
    
}
截取身份证的出生日期并转换为日期格式:
//截取身份证的出生日期并转换为日期格式
-(NSString *)subsIDStrToDate:(NSString *)str{
    NSMutableString *result = [NSMutableString stringWithCapacity:0];
    
    NSString *dateStr = [str substringWithRange:NSMakeRange(6, 8)];
    NSString  *year = [dateStr substringWithRange:NSMakeRange(0, 4)];
    NSString  *month = [dateStr substringWithRange:NSMakeRange(4, 2)];
    NSString  *day = [dateStr substringWithRange:NSMakeRange(6,2)];
    
    [result appendString:year];
    [result appendString:@"-"];
    [result appendString:month];
    [result appendString:@"-"];
    [result appendString:day];
    
    return result;
}
根据出生日期计算年龄:
//计算年龄
-(NSString *)calculateAgeStr:(NSString *)str{
  //截取身份证的出生日期并转换为日期格式
   NSString *dateStr = [self subsIDStrToDate:str];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-mm-dd";
    NSDate *birthDate =  [formatter dateFromString:dateStr];
    NSTimeInterval dateDiff = [birthDate timeIntervalSinceNow];
    
    // 计算年龄
    int age  =  trunc(dateDiff/(60*60*24))/365;
    NSString *ageStr = [NSString stringWithFormat:@"%d", -age];

    return ageStr;
}

打印结果:

dateStr == 1993-08-26
ageStr == 25

你可能感兴趣的:(iOS 根据身份证号获取出生日期,并计算年龄)