【程式碼筆記】iOS-傳身份證號碼可返回生日字串
阿新 • • 發佈:2019-02-08
程式碼:
- (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