如何利用身份证号码计算出生年月,年龄及性别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用身份证号码计算出生年月,年龄及性别相关的知识,希望对你有一定的参考价值。

  居民身份证号码,是可以直接从身份证号码上面分辨出出生日期的,而具体的年龄就需要本人自行进行计算。

  从二代身份证号码组成:
  (1)前1、2位数字表示:所在省(直辖市、自治区)的代码;

  (2)第3、4位数字表示:所在地级市(自治州)的代码;
  (3)第5、6位数字表示:所在区(县、自治县、县级市)的代码;
  (4)第7—14位数字表示:出生年、月、日;
  (5)第15、16位数字表示:所在地的派出所的代码;
  (6)第17位数字表示性别:奇数表示男性(1、3、5、7、9),偶数表示女性(0、2、4、6、8);
  (7)第18位数字是校检码:也有的说是个人信息码,不是随计算机的随机产生,它是 用来检验身份证的正确性。

  从二代身份证号码组成可以了解,从居民身份证号码第17-14位数字是可以直接知道公民户籍系统的出生日期,而第17可以辨别性别。例如11111119990901021X(随便填写,不是有效的身份证号码),第7-14位为19990901,就代表公民是1999年9月1日出生的,第17位为2,代表偶数,女性。公民的实际年龄,就需要以当年的年份减去出生日期进行计算,如2016年10月-1999年9月1日,公民实际年龄就应该是17岁多1个月。
参考技术A 一、身份证号码的构成规则:
1、前6位为地区代码。具体请在网上搜索相关介绍。
2、7位至14位,出生年月日,7—10位出生年,11—12出生月(两位),13—14出生日。
3、15—18位,识别代码。其中第17位就是性别代码,单数为男,双数(含0)为女。
二、从身份证中提取相应的位数进行相应的计算。
1、提取出生年月日并用日期格式表示在单元格里(mid函数+date函数)。
(1)mid函数一共有三个参数:第1个表示字符串或单元格,第2个表示从第几位开始提(用数字表示),第3个表示需要提取几位(用数字表示)。如本例从身份证中提取出生年月日就是要提取第7位开始的8位。用函数表示为:=mid(存放身份证的单元格,7,8)
(2)这样不是标准的日期格式,为我们计算年龄增加了困难,所以要用date函数来生成日期格式。
date函数就是日期函数,一共有三个参数,具体表示为:=date(年,月,日)。如:=date(1966,3,13)得出的结果就是(1966-3-13)
本例需要结合两个函数进行。具体公式为:=date(mid(a2,7,4),mid(a2,11,2),mid(a2,13,2)),最后记得要将单元格格式设置为“日期”才行哦。
2、计算年龄(datedif函数),具体公式为:=datedif(b2,today(),"y")
此函数有三个参数,第一个表示开始日期(本例为出生日期),第二个表示结束日期(本例为今天,公示中用了一个today函数,表示提取计算机日期,此函数没有参数,所以只用了一个双括号表示),第三个参数为计算相差什么(年用y,月用m,日用d。本例指相差的年,所以用y)。
3、计算性别(if函数+mod函数)
(1)if函数:假如条件为真时显示什么,为假时显示什么。具体为:=if(条件,真时显示,假时显示)。如:=if(3>1,1,0)表示如果3大于1,就显示1,否则就显示0,显然,这个的结果是1。
(2)mod函数:表示求两数相除的余数。语法为:=mod(被除数,除数)。如:=mod(9,2)结果为1。
(3)本例需要提取第17位数字进行判断,单数为男,双数为女。很显然,一个数除以2,余数是1的是单数,余数是0的是双数。具体公式为:=if(mod(mid(a2,17,1),2)=1,"男","女")
参考技术B 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。下面举例说明该计算方法。 15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19,但是这对于1900年出生的人不使用(这样的寿星不多了) 某男性公民身份号码本体码为34052419800101001,首先按照公式⑴计算: ∑(ai×Wi)(mod 11)……………………………………(1) 公式(1)中: i----表示号码字符从由至左包括校验码在内的位置序号; ai----表示第i位置上的号码字符值; Wi----示第i位置上的加权因子,其数值依据公式Wi=2(n-1)(mod 11)计算得出。 i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1 根据公式(1)进行计算: ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189 189 ÷ 11 = 17 + 2/11 ∑(ai×Wi)(mod 11) = 2 然后根据计算的结果,从下面的表中查出相应的校验码,其中X表示计算结果为10: ∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10 校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2 根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001X。 a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[5]*4+a[6]*2+a[7]*1+a[8]*6+a[9]*3 +a[10]*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2 %11 when 0 then '1' when 1 then '0' when 2 then 'X' when 3 then '9' when 4 then '8' when 5 then '7' when 6 then '6' when 7 then '5' when 8 then '4' when 9 then '3' when 10 then '2' */ /*本回答被提问者采纳 参考技术C 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
从第7个数字开始就是出生年月日了,
今天2016,减去他的出生年就是年龄了。
倒数第二位数,单数为男,双数为女。

求EXLCE表格输入身份证号码后由自动跳出出生年月日、生日月份、性别、年龄等信息的公式

还有输入入职日期,后面自动跳出自入职日期开始计算工龄的公式,求高手求公式!

身份证:331022199407111677   生日:=MID(A2,7,8)   月份=MID(A2,11,2)    性别=IF(MOD(MID(A2,17,1),2)=0,"女","男")    年龄=2018-MID(A2,7,4)  这个其实很简单,想一想就能做出来,表太懒啊

追问

谢谢,其他都可以,性别出不来呀

参考技术A mid函数,百度一下,你就知道怎么用了。
很简单的!!

以上是关于如何利用身份证号码计算出生年月,年龄及性别的主要内容,如果未能解决你的问题,请参考以下文章

在EXCELL里输入身份证号后,怎样利用函数提取性别,生日呢?

各位兄弟都来,如何在sql里利用身份证查询出生日期?

excel 中把身份证号转换成年龄和出生日期的公式是啥?

如何在数据库中利用sql从18位身份证号中截取出生日期,身份证号在reader表中

如何用jQuery实现输入身份证号码后,出生日期自动生成

excel身份证号如何提取出生日期?