15位身份证号换算成18位计算方法

合集下载

身份证号自动生成年龄、出生年月、性别公式

身份证号自动生成年龄、出生年月、性别公式

身份证号自动生成年龄、出生年月、性别公式:1、生成出生年月日公式一(18位号和15位号都可自动生成 19**-*-*):=DATE(MID(I4,IF(LEN(I4)=18,7,7),IF(LEN(I4)=18,4,2)),MID(I4,IF(LEN(I4 )=18,11,9),IF(LEN(I4)=18,2,2)),MID(I4,IF(LEN(I4)=18,13,11),IF(LEN(I4 )=18,2,2)))生成出生年月日公式二(18位或15位号生成19**-**-**):=IF(LEN(C2)=15,"19"&MID(C2,7,2)&"-"&MID(C2,9,2)&"-"&MID(C2,11,2),MID (C2,7,4)&"-"&MID(C2,11,2)&"-"&MID(C2,13,2))生成出生年月日公式三(19XX年XX月XX日)=IF(LEN(C2)=15,"19"&MID(C2,7,2)&"-"&MID(C2,9,2)&"-"&MID(C2,11,2),MID (C2,7,4)&"年"&MID(C2,11,2)&"月"&MID(C2,13,2)&"日")说明:自动生成出生年月就把以上公式复制粘贴到需自动生成“出生年月日”的那一栏第一格,然后把公式一中的所有“I4”或公式二中的所有“C2”改成身份证号码单元格的栏代码如A、B、C、D……和行数如1、2、3、4……。

点“回车”即可。

2、利用出生年月日生成年龄:=YEAR(TODAY())-YEAR(F4)说明:自动生成年龄就把以上公式复制粘贴到需自动生成那一栏第一格,然后把公式中的所有“F4”改成出生年月日单元格的栏代码如A、B、C、D……和行数如1、2、3、4……。

身份证15位变18位

身份证15位变18位

#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!

身份证号码校验也可以利用excel函数公式完成

身份证号码校验也可以利用excel函数公式完成

身份证号码校验也可以利用excel函数公式完成身份证号码校验也可以利用excel函数公式完成,无需vba编程。

一、18位身份证号码校验函数公式:=IF(LEN(B2)=18,IF(MID("10X98765432",MOD(SUM(MID(LEF T(B2,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(B2,1),"通过","校验未通过"),"")二、15位身份证号码升18位函数公式:=IF(LEN(B2)=15,REPLACE(B2,7,,19)&MID("10X98765432",M OD(SUM(MID(REPLACE(B2,7,,19),ROW(INDIRECT("1:17")),1)*2^( 18-ROW(INDIRECT("1:17")))),11)+1,1),"")三、同时完成15位升位或18位校验的函数公式:=IF(LEN(B2)=18,IF(MID("10X98765432",MOD(SUM(MID(LEF T(B2,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(B2,1),"通过","校验未通过"),IF(LEN(B2)=15,REPLACE(B2,7,,19)&MID("10X98765432",MOD( SUM(MID(REPLACE(B2,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),""))以上公式中B2为身份证号码所在单元格。

浅谈如何将身份证号码15位转为18位

浅谈如何将身份证号码15位转为18位

浅谈如何将身份证号码15位转为18位笔者日前参与城乡居民保险制度全覆盖审计调查,在审查参保人员是否存在重复参加城乡居保及职工养老险种情况时,发现城乡居保参保人信息中身份证号码均为18位,而职工养老参保人信息中身份证号码长度不唯一,导致无法正确比对数据。

18位身份证号码除了据原有15位基础上,在出生年月部分添加“19”外,号码最后添加一位验证码。

公安局公布的验证码算法内容概述为:将添加“19”后的17位身份证号码对应乘上系数并求和,再将系数和除11后求余数,根据余数对应选择验证码。

笔者据此编写出一套语句,内容如下:一、筛选出15位身份证号码后生成一张新表,将其转为17位1.select 公民身份号码 into 身份证号码 from dbo.个人基本信息 where len(公民身份号码)=152. alter table 身份证号码 add 公民身份号码17位varchar(20)3.update 身份证号码 set 公民身份号码17位=substring(公民身份号码,1,6)+'19'+RIGHT(公民身份号码,7)二、添加系数和、余数及验证码三列Alter table 身份证号码 add系数和 intAlter table 身份证号码 add余数 intAlter table 身份证号码 add验证码 varchar(2)三、求系数和update dbo.身份证号码 set 系数和 =cast(left(公民身份号码17位,1) as int)*7+cast(substring(公民身份号码17位,2,1) as int)*9+cast(substring(公民身份号码17位,3,1) as int)*10+cast(substring(公民身份号码17位,4,1)as int)*5+cast(substring(公民身份号码17位,5,1)as int)*8+cast(substring(公民身份号码17位,6,1)as int)*4+cast(substring(公民身份号码17位,7,1) as int)*2+cast(substring(公民身份号码17位,8,1)as int)*1+cast(substring(公民身份号码17位,9,1)asint)*6+cast(substring(公民身份号码17位,10,1)asint)*3+cast(substring(公民身份号码17位,11,1)asint)*7+cast(substring(公民身份号码17位,12,1) as int)*9+cast(substring(公民身份号码17位,13,1)asint)*10+cast(substring(公民身份号码17位,14,1)as int)*5+cast(substring(公民身份号码17位,15,1)asint)*8+cast(substring(公民身份号码17位,16,1)asint)*4+cast(substring(公民身份号码17位,17,1)as int)*2四、求余数Update 身份证号码 set 余数=系数和%11五、求验证码Update 身份证号码 set 验证码= case 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' end六、更新原参保信息表Update a set a. 公民身份号码='b.公民身份号码位'+'b.验证码' from dbo.个人基本信息a,身份证号码 b where a. 公民身份号码=b. 公民身份号码。

Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例

Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例

Java根据⾝份证号计算年龄,15位⾝份证号码转18位原理与操作⽰例本⽂实例讲述了Java根据⾝份证号计算年龄,15位⾝份证号码转18位。

分享给⼤家供⼤家参考,具体如下:第⼀代⾝份证:15位⾝份证号码的意义15位⾝份证号码各位的含义:1-2位省、⾃治区、直辖市代码;3-4位地级市、盟、⾃治州代码;5-6位县、县级市、区代码;7-12位出⽣年⽉⽇,⽐如670401代表1967年4⽉1⽇,这是和18位号码的第⼀个区别;13-15位为顺序号,其中15位男为单数,⼥为双数;与18位⾝份证号的第⼆个区别:没有最后⼀位的校验码。

举例:130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出⽣⽇期为1967年4⽉1⽇,顺序号为001第⼆代⾝份证:18位⾝份证号码的意义 ①前1、2位数字表⽰:所在省份的代码,河南的省份代码是41哦! ②第3、4位数字表⽰:所在城市的代码; ③第5、6位数字表⽰:所在区县的代码; ④第7~14位数字表⽰:出⽣年、⽉、⽇; ⑤第15、16位数字表⽰:所在地的派出所的代码; ⑥第17位数字表⽰性别:奇数表⽰男性,偶数表⽰⼥性; ⑦第18位数字是校检码:也有的说是个⼈信息码,⼀般是随计算机随机产⽣,⽤来检验⾝份证的正确性。

校检码可以是0~9的数字,有时也⽤x表⽰。

举例:130503 19670401 0012这个⾝份证号的含义: 13为河北,05为邢台,03为桥西区,出⽣⽇期为1967年4⽉1⽇,顺序号为001,2为校验码。

根据⾝份证号(18位)提取出⽣年⽉⽇和计算年龄package idcard;import java.text.SimpleDateFormat;import java.util.Date;public class IdCardTest {//根据⾝份证号输出年龄public static int IdNOToAge(String IdNO){int leh = IdNO.length();String dates="";int age = 0;if (leh == 18) {dates = IdNO.substring(6, 10);SimpleDateFormat df = new SimpleDateFormat("yyyy");String year = df.format(new Date());age = Integer.parseInt(year)-Integer.parseInt(dates);}else {System.out.println("出错!⾝份证长度不是18位!");}return age;}public static void main(String[] args) {System.out.println(IdNOToAge("120000************"));System.out.println(IdNOToAge("320000************"));}}15位⾝份证号码转换成18位⾝份证号码package idcard;import java.util.Scanner;public class IDcard15bitTo18bit {public static String[] trans15bitTo18bit(String[] input){String[] result = new String[18];for(int i=0;i<input.length;i++){if(i<=5){result[i] = input[i];}else{result[i+2] = input[i];}}//年份最后两位⼩于17,年份为20XX,否则为19XXif(Integer.valueOf(input[6])<=1&&Integer.valueOf(input[7])<=7){result[6]="2";result[7]="0";}else{result[6]="1";result[7]="9";}//计算最后⼀位String[] xs = {"7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"}; //前⼗七位乘以系数[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],int sum = 0;for(int i=0;i<17;i++){sum+= Integer.valueOf(result[i]) * Integer.valueOf(xs[i]);}//对11求余,的余数 0 - 10int rod = sum % 11;//所得余数映射到对应数字即可if(rod==0){ result[17] = "1";}else if(rod==1){ result[17] = "0";}else if(rod==2){ result[17] = "X";}else if(rod==3){ result[17] = "9";}else if(rod==4){ result[17] = "8";}else if(rod==5){ result[17] = "7";}else if(rod==6){ result[17] = "6";}else if(rod==7){ result[17] = "5";}else if(rod==8){ result[17] = "4";}else if(rod==9){ result[17] = "3";}else if(rod==10){ result[17] = "2";}return result;}public static void main(String[] args) {//创建输⼊对象Scanner sc=new Scanner(System.in);//获取⽤户输⼊的字符串String str="";System.out.print("请输⼊您的15位⾝份证号:");str=sc.nextLine();System.out.println("您输⼊的15位⾝份证号为:"+str);if(str.length()==15){String[] input = str.split("");String[] result = trans15bitTo18bit(input);System.out.print("您的18位⾝份证号是:");for(String c:result){System.out.print(c);}}else{System.out.println("不符合格式的⾝份证号!");}}}附:C# 版与VB 版 15位的⾝份证号转为18位操作⽰例C# 版function ID15T18(strTemp){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var nTemp = 0, i;if(strTemp.length==15){strTemp = strTemp.substr(0,6) + '19' + strTemp.substr(6,strTemp.length-6);for(i = 0; i < strTemp.length; i ++){nTemp += strTemp.substr(i, 1) * arrInt[i];}strTemp += arrCh[nTemp % 11];}return strTemp;}VB 版privatestringConvert15To18(stringstrTemp){int[]arrInt=newint[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};stringarrCh="10X98765432";intnTemp=0;if(strTemp.Length==15){strTemp=strTemp.Substring(0,6)+"19"+strTemp.Substring(6,strTemp.Length-6);for(inti=0;i<strTemp.Length;i++){nTemp+=int.Parse(strTemp.Substring(i,1).ToString())*arrInt[i];}strTemp+=arrCh[nTemp%11];}chardd=arrCh[nTemp%11];returnstrTemp;}PS:这⾥再提供⼀款本站⾝份证归属地信息查询⼯具供⼤家参考:另外,本站在线⼯具⼩程序上也有⼀款功能更加强⼤的⾝份证信息获取⼯具,感兴趣的朋友可以扫描如下⼩程序码查看:更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。

身份证号码换算年龄、性别、出生日期的公式

身份证号码换算年龄、性别、出生日期的公式

身份证号码换算年龄、性别、出生日期的公式15位和18位的身份证号都合适的了。

设内容如下:........A列......B列......C列......D列....1 身份证号性别出生年月年龄2(输入身份证号)算年龄的:“=IF(OR(LEN(A2)=15,LEN(A2)=18),RIGHT(IF(IF(LEN(A2)=15, MID(A2,9,2),MID(A2,11,2) )*100+IF(LEN(A2)=15,MID(A2,11,2),MI D(A2,13,2))>MONTH(TODAY())*100+DAY(TODAY()),YEAR(TODAY())-IF(LEN(A2)=15,MID(A2,7,2),MID(A2,9,2))-1,YEAR(TODAY())-IF(L EN(A2)=15,MID(A2,7,2),MID(A2,9,2))),2),"证号错误")”算性别的:“=IF(LEN(A2)=15,(IF(OR(ABS(RIGHT(A2))=1,ABS(RIGHT(A2) )=3,ABS(RIGHT(A2))=5,A BS(RIGHT(A2))=7,ABS(RIGHT(A2))=9),"男","女")),(IF(OR(ABS(MID(A2,17,1))=1,ABS(MID(A2,17,1))=3,ABS(M ID(A2,17,1))=5,ABS(MID( A2,17,1))=7,ABS(MID(A2,17,1))=9),"男","女")))”算出生年月的:“=DATE(IF(LEN(E3)=15,MID(E3,7,2),MID(E3,9,2)),IF(LEN(E3) =15,MID(E3,9,2),MID(E3,11,2)),IF(LEN(E3)=15,MID(E3,11,2),MID(E3,13,2)))”只要把输入身份证号的单元格格式设为“文本”就是最关键的,准确。

Excel实现身份证号码自动转换为18位的技巧

Excel实现身份证号码自动转换为18位的技巧

Excel实现身份证号码自动转换为18位的技巧我们知道,在第一代身份证中,一般情况下编号都是15位的,而在第二代身份证中编码都是18位的。

那么,我们在应用Excel办公软件处理身份证号码时,该如何自动将15位的身份证号码转换为18位的号码呢?下面,请跟软件直销网小编一起来学习,如何借助公式,进行身份证号码自动转换的方法吧。

【相关内容】巧妙翻新Excel办公软件旧表格提高工作效率巧妙利用Excel办公软件的语音校对功能利用Excel办公软件建立数据库的技巧首先,我们假设A列自A2起是身份证号(15位或18位)。

1,身份证号全部改为18位,输入数组公式:=IF(LEN(A2)=15,REPLACE(A2,7,,19)&MID("10X98765432",MOD(SUM(MID(REPLACE(A2,7,,19 ),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),A2)软件直销网友情提醒:数组公式输入方法:在输入公式后不要按回车,而是按Ctrl+Shift+Enter。

2,身份证号全部改为15位,输入公式:=IF(LEN(A2)=15,A2,LEFT(REPLACE(A2,7,2,),15))3,计算出生日期:=IF(A2"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")+0,)4,判断性别:=IF(A2"",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女"),)最终结果如下图所示:。

将15位身份证补全为18位身份证的算法示例详解

将15位身份证补全为18位身份证的算法示例详解

将15位⾝份证补全为18位⾝份证的算法⽰例详解前⾔最近在参与⼀个银⾏项⽬-某银⾏安防系统-反洗钱需求的开发,银⾏项⽬的离不开⾝份证号码,⾝份证号码作为我国公民的唯⼀标识,有这⾮同寻常的意义,由于业务的要求15位的⾝份证号码⽆法命中,所以需要补全为18位,⼀开始⾃⼰想着加个年份的前两位,后⾯再加个X不就⾏了嘛,后来代码写不下去了,上⽹查了资料,才知道⾃⼰想的是多么天真,还是⽐较复杂的,折腾了⼀下午终于有了眉⽬。

⼀、15位⾝份证和18位⾝份证号码结构介绍要进⾏⾝份证号码的验证,⾸先需要了解我国⾝份证号码的编码规则。

我国⾝份证号码多由若⼲位数字或者数字与字母混合组成。

早期⾝份证由15位数字构成,这主要是在1980年以前发放的⾝份证,后来考虑到千年⾍问题,因为15位的⾝份证号码只能为1900年1⽉1⽇到1999年12⽉31⽇出⽣的⼈编号,所以⼜增加了18位⾝份证号码编号规则。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15A A A A A A Y Y M M D D N N S前六位AAAAAA是⾝份证编码对象的所在地(出⽣地)的编码,该号码可由国家统计局公布的相关标准中得到。

YY表⽰出⽣年的后两位,MM和DD表⽰出⽣⽉和⽇,不⾜两位的⾼位补0,NNS为顺序号,⽆法确定。

S为性别识别码,男性为奇数,⼥性为偶数。

了解了这些,再来写代码就变得容易多了。

⼆、算法实现了解了⾝份证号码的规则后,我们就可以推断出,⾝份证的15位转化位需要两步。

⾸先把15位⾝份证号补全为17位,然后再补全最后⼀位。

但是最后⼀位是数字还是字母X?这⾥⼜出现了问题。

我们知道,⾝份证的最后⼀位为校验位,那么最后⼀位是怎么得到的呢?原来,最后⼀位是由数字1-9组成,超过9的⽐如11就⽤字母X表⽰,否则号码就变成了19位。

了解了这些,经过整理得出⾝份证补全算法实现思想如下:step1、将15位⾝份证号码加⼊出⽣年变为17位 step2、将step1得到的⾝份证17位数分别乘以不同的系数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档