/**

从身份证上获取年龄 18位身份证

*/

-(NSString *)getIdentityCardAge:(NSString *)numberStr

{

NSDateFormatter *formatterTow = [[NSDateFormatter alloc]init];

[formatterTow setDateFormat:@"yyyy-MM-dd"];

NSDate *bsyDate = [formatterTow dateFromString:[self birthdayStrFromIdentityCard:numberStr]];

NSTimeInterval dateDiff = [bsyDate timeIntervalSinceNow];

int age = trunc(dateDiff/(60*60*24))/365;

return [NSString stringWithFormat:@"%d",-age];

}

-(NSString *)birthdayStrFromIdentityCard:(NSString *)numberStr

{

NSMutableString *result = [NSMutableString stringWithCapacity:0];

NSString *year = nil;

NSString *month = nil;

BOOL isAllNumber = YES;

NSString *day = nil;

if([numberStr length]<18)

return result;

//**从第6位开始 截取8个数

NSString *fontNumer = [numberStr substringWithRange:NSMakeRange(6, 8)];

//**检测前12位否全都是数字;

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 = [NSString stringWithFormat:@"19%@",[numberStr substringWithRange:NSMakeRange(8, 2)]];

//    NSLog(@"year ==%@",year);

month = [numberStr substringWithRange:NSMakeRange(10, 2)];

//    NSLog(@"month ==%@",month);

day = [numberStr substringWithRange:NSMakeRange(12,2)];

//    NSLog(@"day==%@",day);

[result appendString:year];

[result appendString:@"-"];

[result appendString:month];

[result appendString:@"-"];

[result appendString:day];

//    NSLog(@"result===%@",result);

return result;

}

/**

*  从身份证上获取性别

*/

-(NSString *)getIdentityCardSex:(NSString *)numberStr

{

NSString *sex = @"";

//获取18位 二代身份证  性别

if (numberStr.length==18)

{

int sexInt=[[numberStr substringWithRange:NSMakeRange(16,1)] intValue];

if(sexInt%2!=0)

{

NSLog(@"1");

sex = @"男";

}

else

{

NSLog(@"2");

sex = @"女";

}

}

//  获取15位 一代身份证  性别

if (numberStr.length==15)

{

int sexInt=[[numberStr substringWithRange:NSMakeRange(14,1)] intValue];

if(sexInt%2!=0)

{

NSLog(@"1");

sex = @"男";

}

else

{

NSLog(@"2");

sex = @"女";

}

}

return sex;

}

IOS 根据身份证号码获取 年龄 生日 性别的更多相关文章

  1. java 根据身份证号码获取出生日期、性别、年龄

      1.情景展示 如何根据身份证号,计算出出生日期.性别.年龄? 2.解决方案 从网上找的别人的,因为并没有实际用到,所以并未对其优化! /** * 通过身份证号码获取出生日期.性别.年龄 * @pa ...

  2. SQL 根据身份证号码获取年龄的函数

    在数据库的运用过程中,我们时常会碰到根据身份证号码来获取当前的年龄,今天我在这里写了一个函数,就是关于获取年龄的 create or replace function FUNC_COMPARE_SFZ ...

  3. oracle根据身份证号码 计算年龄、性别

    一.Oracle根据身份证判断性别: 女生身份证: 431382198103246985 男生身份证: 150921197208173492 SQL语句如下:   select decode(mod ...

  4. JAVA通过身份证号码获取出生日期、年龄、性别

    JAVA验证身份证号码是否正确:https://www.cnblogs.com/pxblog/p/12038278.html /** * 通过身份证号码获取出生日期(birthday).年龄(age) ...

  5. php 身份证号码获取星座和生肖

    发布:thatboy   来源:Net     [大 中 小] 本文介绍下,php用身份证号码获取星座和生肖的方法,一个简单的php实例,从身份证号码中取得星座与生肖信息,有兴趣的朋友参考研究下吧.本 ...

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

    代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NS ...

  7. PHP提取身份证号码中的生日并验证是否成年的函数

    php 提取身份证号码中的生日日期以及确定是否成年的一个函数.可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下: <?php //用php从身份证中提取生日,包括15位 ...

  8. php提取身份证号码中的生日日期以及验证是否为未成年人的函数

    php 提取身份证号码中的生日日期以及确定是否成年的一个函数.可以同时确定15位和18位的身份证,经本人亲测,非常好用,分享函数代码如下: <?php //用php从身份证中提取生日,包括15位 ...

  9. C#根据身份证号码,计算生日、年龄、性别

    朋友谈及身份证相关的信息,才了解到原来省份证号码中包含了年龄和性别. 这样在数据库中,就不必单独留字段存放它们了(不过,要根据具体情况来,要是读取频率较高,还是单独列出为好),这样顺带解决了年龄变更的 ...

随机推荐

  1. Could not load file or assembly 'System.Web.Http

    使用FusLogVw https://stackoverflow.com/questions/4469929/could-not-load-file-or-assembly-or-one-of-its ...

  2. 【转载】asp.net 后台弹出提示框

    感觉这种最好用: public void showMessage(string str_Message) { ClientScript.RegisterStartupScript(this.GetTy ...

  3. ccflow汇总帖

    视频教程学习 公司电脑路径; E:\开源工作流\ccflow佳怡物流版\ccflow\doc cclfow的码云地址: https://gitee.com/opencc/ccflow 在线demo演示 ...

  4. 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时7

    课时7 线性分类器损失函数与最优化(下) 我们为什么要最大化对数概率而非直接最大化概率? 你在做逻辑斯蒂回归时,如果你只是想要最大化概率,那你使用log是无意义的.因为log函数是单调函数,最大化概率 ...

  5. 洛谷 - P2335 - 位图 - 简单dp

    https://www.luogu.org/problemnew/show/P2335 假如我们使用dp的话,每次求出一个点的左上方.右上方.左下方.右下方的最近的白点的距离.那么只是n²的复杂度.这 ...

  6. hdoj1176【DP】

    DP基础吧.A掉还是挺爽的.就是考虑在两端只能是从前一秒的内部一米或原来的点来进行,但是在5秒以内可到达点是逐渐外扩的,并不是[0,10],所以就特殊考虑了一下.后面两端是0和10,中间的点可以从上一 ...

  7. AT2534 港湾設備 (Port Facility)

    洛谷 先膜一下Iscream巨巨 首先我们可以把题目转化为线段覆盖,如果两条线段相交(不算某一条完全在另一条里面的情况),那么这两条线段代表的集装箱就不能放到同一个栈里,我们在它们之间连一条边.如果图 ...

  8. 纯JS阻止浏览器默认滚动事件,实现自定义滚动方法

    首先该方法兼容IE7+以上浏览器,可以实现页面上下滚动,而且也可以实现页面左右滚动,每次滚动的距离为屏幕的大小,滚动为加速滚动 javaScript代码如下: //滚动实现方法,使用鼠标滚轮每次滚动浏 ...

  9. 笔记:JavaScript闭包

    闭包 闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰.直观的说就是形成一个不销毁的栈环境. 对于闭包,当外部函数返回之后,内部函数依然可以访问外部函数的变量 ...

  10. 本周学习总结(ng-zorro/MDN索引/读书笔记)

    按钮 <button ng-button nzType="primary">Primary</button> nzType="" pri ...