验证身份证是否满18岁

由于项目中需要校验用户输入的身份证是否满18岁,且网上的方法鱼龙混杂,故自定义校验方法如下:

  • 第一种方法:
 //验证身份证是否成年这个方法中不做身份证校验,请确保传入的是正确身份证
 + (BOOL)verifyIDCardWithAdult:(NSString *)card{

//身份证:****年**月**日
     //年
     NSString *year = [card substringWithRange:NSMakeRange(6,4)];
     NSInteger  birthdayYear = [year integerValue];
     //月
     NSString *month = [card substringWithRange:NSMakeRange(10,2)];
     NSInteger  birthdayMonth = [month integerValue];
     //日
     NSString *day = [card substringWithRange:NSMakeRange(12,2)];
     NSInteger  birthdayDay = [day integerValue];


//获取当前时间,日期:
     NSDate *currentDate = [NSDate date];
     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
     [dateFormatter setDateFormat:@"YYYY/MM/dd"];
     NSString *dateString = [dateFormatter stringFromDate:currentDate];
     NSRange range0 = [dateString rangeOfString:@"/"];
     //年
     NSString *year0 = [dateString substringToIndex:range0.location];
     NSInteger  nowYear = [year0 integerValue];
     //月
     NSString *month0 = [dateString substringWithRange:NSMakeRange(5, 2)];
     NSInteger  nowMonth = [month0 integerValue];
     //日
     NSString *day0 = [dateString substringWithRange:NSMakeRange(8, 2)];
     NSInteger  nowDay = [day0 integerValue];


//具体校验:
     //年
     if (nowYear - birthdayYear < 18){

         return false;
     }else if (nowYear - birthdayYear == 18){

         //月
         if (nowMonth < birthdayMonth){

             return false;


         }else if (nowMonth == birthdayMonth){

             //日
            if (nowDay < birthdayDay){

                return false;
            }
         }
     }
     return true;
}
  • 第二种方法:
+ (BOOL)verifyIDCardHadAdultII:(NSString *)card{

    //身份证:****年**月**日
    //年
    NSString *year = [card substringWithRange:NSMakeRange(6,4)];
    int  birthdayYear = [year intValue];
    birthdayYear+=18;

    //月日
    NSString *monthDay = [card substringWithRange:NSMakeRange(10,4)];
    int  birthdayMonth = [monthDay intValue];
    NSString *birthdayDay = [NSString stringWithFormat:@"%d%d",birthdayYear,birthdayMonth];

    //获取当前时间,日期:
    NSDate *currentDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYYMMdd"];
    NSString *dateString = [dateFormatter stringFromDate:currentDate];

    //年
    NSString *year0 = [dateString substringWithRange:NSMakeRange(0, 4)];
    int  nowYear = [year0 intValue];
    //月日
    NSString *month0 = [dateString substringWithRange:NSMakeRange(4, 4)];
    int  nowMonth = [month0 intValue];
    NSString *current = [NSString stringWithFormat:@"%d%d",nowYear,nowMonth];


    //比较
    if([birthdayDay compare:current options:NSNumericSearch] == NSOrderedDescending){

        return false;
    }

    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值