时间:2021-05-20
本文实例讲述了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("120000197802150561")); System.out.println(IdNOToAge("32000019951110538X")); }}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,否则为19XX if(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 - 10 int 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:这里再提供一款本站身份证归属地信息查询工具供大家参考:
身份证归属地信息在线查询:
http://tools.jb51.net/bianmin/sfz
另外,本站在线工具小程序上也有一款功能更加强大的身份证信息获取工具,感兴趣的朋友可以扫描如下小程序码查看:
更多关于java相关内容感兴趣的读者可查看本站专题:《Java字符与字符串操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、根据身份证号码计算出生日期、年龄、性别(18位)复制代码代码如下://获取输入身份证号码varUUserCard=$("#UUserCard").val()
/**根据身份证号码判断性别15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日18位身份证号码:第7、8、9、1
S=Sum(Ai*Wi),i=0,.......16(现在的身份证号码都是18位长,其中最后一位是校验位,15位的身份证号码好像不用了)Ai对应身份证号码,Wi
现在我们使用的都是18位身份证号,而以前都是15位身份证号,而如何将15位身份证号转18位身份证号转换为18位身份证号呢?1、首先,在15位身份证的第6位之后加
本文实例讲述了PHP实现15位身份证号转18位的方法。分享给大家供大家参考,具体如下:第一代身份证:15位身份证号码的意义1-2位省、自治区、直辖市代码;3-4