阅读背景:

【代码笔记】iOS-传身份证号码可返回生日字符串

来源:互联网 

代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    NSString *birthDay=[self birthdayStrFromIdentityCard:@"134825194401014241"];
    NSLog(@"--birthDay-%@",birthDay);
    
}
//传身份证返回生日字符串
-(NSString *)birthdayStrFromIdentityCard:(NSString *)numberStr{
    
    NSMutableString *result = [NSMutableString stringWithCapacity:0];
    NSString *year = nil;
    NSString *month = nil;
    
    BOOL isAllNumber = YES;
    NSString *day = nil;
    if([numberStr length]<14)
        return result;
    
    //**截取前14位
    NSString *fontNumer = [numberStr substringWithRange:NSMakeRange(0, 13)];
    
    //**检测前14位否全都是数字;
    const char *str = [fontNumer UTF8String];
    const char *p = str;
    while (*p!='

代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    NSString *birthDay=[self birthdayStrFromIdentityCard:@"134825194401014241"];
    NSLog(@"--birthDay-%@",birthDay);
    
}
//传身份证返回生日字符串
-(NSString *)birthdayStrFromIdentityCard:(NSString *)numberStr{
    
    NSMutableString *result = [NSMutableString stringWithCapacity:0];
    NSString *year = nil;
    NSString *month = nil;
    
    BOOL isAllNumber = YES;
    NSString *day = nil;
    if([numberStr length]<14)
        return result;
    
    //**截取前14位
    NSString *fontNumer = [numberStr substringWithRange:NSMakeRange(0, 13)];
    
    //**检测前14位否全都是数字;
    const char *str = [fontNumer UTF8String];
    const char *p = str;
    while (*p!='\0') {
        if(!(*p>='0'&&*p<='9'))
            isAllNumber = NO;
        p++;
    }
    
    if(!isAllNumber)
        return result;
    
    year = [numberStr substringWithRange:NSMakeRange(6, 4)];
    month = [numberStr substringWithRange:NSMakeRange(10, 2)];
    day = [numberStr substringWithRange:NSMakeRange(12,2)];
    
    [result appendString:year];
    [result appendString:@"-"];
    [result appendString:month];
    [result appendString:@"-"];
    [result appendString:day];
    return result;
    
}

 

输出:

2015-10-13 13:26:38.308 传身份证号码可返回生日字符串[6947:172533] --birthDay-1944-01-01

 


') { if(!(*p>='0'&&*p<='9')) isAllNumber = NO; p++; } if(!isAllNumber) return result; year = [numberStr substringWithRange:NSMakeRange(6, 4)]; month = [numberStr substringWithRange:NSMakeRange(10, 2)]; day = [numberStr substringWithRange:NSMakeRange(12,2)]; [result appendString:year]; [result appendString:@"-"]; [result appendString:month]; [result appendString:@"-"]; [result appendString:day]; return result; }- (void)viewDidLoad { [s



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: