/**

从身份证上获取年龄 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. sql server中like无法匹配下划线问题解决方案

    在sql server的like中下划线类似于通配符%,所以无法使用like '%_%'来匹配下划线,可以通过以下两种办法实现匹配下划线 1.使用转义字符escape like '%\_%' esca ...

  2. 【CAIOJ 1178】 最长共同前缀长度

    [题目链接] 点击打开链接 [算法] EXKMP [代码] #include<bits/stdc++.h> using namespace std; #define MAXL 100001 ...

  3. C++ set和map的简单使用

    C++中的STL模板库的功能可谓相当强大.今天我们来简单说一下set和map的使用方法. 1.pair 我们先来说一下pair.pair定义在头文件<utility>中,其本身相当于一个已 ...

  4. bzoj 4398 福慧双修 —— 二进制分组+多起点最短路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4398 按二进制每一位是 0/1 把 1 号点的儿子分成两组,分别作为起点和终点跑多起点最短路 ...

  5. Sublime text 安装Package Control

    Package Control 插件是一个方便 Sublime text 管理插件的插件,但因为 Sublime Text 3 更新了 Python 的函数,API不同了,导致基于 Python 开发 ...

  6. caffe 入门实例2 如何写一个模型

    占坑,记录如何写一个基于lenet5的模型,并进行测试.

  7. Two

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission( ...

  8. Spring-SpringMVC父子容器&AOP使用总结

    此文已由作者尧飘然授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring&SpringMVC Spring&SpringMVC作为bean管理容器和MV ...

  9. XTU1267:Highway(LCA+树的直径)

    传送门 题意 有n个小镇,Bobo想要建造n-1条边,并且如果在u到v建边,那么花费是u到v的最短路长度(原图),问你最大的花费. 分析 比赛的时候没做出来,QAQ 我们首先要找到树的直径起点和终点, ...

  10. layui前端框架实例(修复官网数据接口异常问题)

    layui前端框架实例,官网的实例会提示数据接口异常,已修复. 主要是修改数据表格,做一个可以用的实例,可以选中,编辑,删除等. gitee地址:https://gitee.com/pingg2019 ...