Java如何根據(jù)身份證號(hào)計(jì)算年齡

本篇內(nèi)容主要講解“Java如何根據(jù)身份證號(hào)計(jì)算年齡”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java如何根據(jù)身份證號(hào)計(jì)算年齡”吧!

成都創(chuàng)新互聯(lián)公司主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺(jué)設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、成都全網(wǎng)營(yíng)銷、網(wǎng)站程序開(kāi)發(fā)、HTML5響應(yīng)式重慶網(wǎng)站建設(shè)公司手機(jī)網(wǎng)站制作設(shè)計(jì)、微商城、網(wǎng)站托管及網(wǎng)站維護(hù)、WEB系統(tǒng)開(kāi)發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都VR全景行業(yè)客戶提供了網(wǎng)站維護(hù)服務(wù)。

第一代身份證:15位身份證號(hào)碼的意義

15位身份證號(hào)碼各位的含義: 1-2位省、自治區(qū)、直轄市代碼; 3-4位地級(jí)市、盟、自治州代碼; 5-6位縣、縣級(jí)市、區(qū)代碼; 7-12位出生年月日,比如670401代表1967年4月1日,這是和18位號(hào)碼的第一個(gè)區(qū)別; 13-15位為順序號(hào),其中15位男為單數(shù),女為雙數(shù); 與18位身份證號(hào)的第二個(gè)區(qū)別沒(méi)有最后一位的校驗(yàn)碼。

舉例: 130503 670401 001的含義; 13為河北,05為邢臺(tái),03為橋西區(qū),出生日期為1967年4月1日,順序號(hào)為001

第二代身份證:18位身份證號(hào)碼的意義

①前1、2位數(shù)字表示:所在省份的代碼,河南的省份代碼是41哦! ?、诘?、4位數(shù)字表示:所在城市的代碼;  ③第5、6位數(shù)字表示:所在區(qū)縣的代碼; ?、艿?~14位數(shù)字表示:出生年、月、日; ?、莸?5、16位數(shù)字表示:所在地的派出所的代碼; ?、薜?7位數(shù)字表示性別:奇數(shù)表示男性,偶數(shù)表示女性; ?、叩?8位數(shù)字是校檢碼:也有的說(shuō)是個(gè)人信息碼,一般是隨計(jì)算機(jī)隨機(jī)產(chǎn)生,用來(lái)檢驗(yàn)身份證的正確性。校檢碼可以是0~9的數(shù)字,有時(shí)也用x表示。

舉例:

130503 19670401 0012這個(gè)身份證號(hào)的含義: 13為河北,05為邢臺(tái),03為橋西區(qū),出生日期為1967年4月1日,順序號(hào)為001,2為校驗(yàn)碼。

根據(jù)身份證號(hào)(18位)提取出生年月日和計(jì)算年齡

package idcard;import java.text.SimpleDateFormat;import java.util.Date;public class IdCardTest { //根據(jù)身份證號(hào)輸出年齡 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("出錯(cuò)!身份證長(zhǎng)度不是18位!");  }  return age; } public static void main(String[] args) {  System.out.println(IdNOToAge("120000197802150561"));  System.out.println(IdNOToAge("32000019951110538X")); }}

15位身份證號(hào)碼轉(zhuǎn)換成18位身份證號(hào)碼

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";  }  //計(jì)算最后一位  String[] xs = {"7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"};  //前十七位乘以系數(shù)[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]);  }  //對(duì)11求余,的余數(shù) 0 - 10  int rod = sum % 11;  //所得余數(shù)映射到對(duì)應(yīng)數(shù)字即可  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) {   //創(chuàng)建輸入對(duì)象   Scanner sc=new Scanner(System.in);   //獲取用戶輸入的字符串   String str="";   System.out.print("請(qǐng)輸入您的15位身份證號(hào):");   str=sc.nextLine();   System.out.println("您輸入的15位身份證號(hào)為:"+str);   if(str.length()==15){    String[] input = str.split("");    String[] result = trans15bitTo18bit(input);    System.out.print("您的18位身份證號(hào)是:");    for(String c:result){     System.out.print(c);    }   }else{    System.out.println("不符合格式的身份證號(hào)!");   } }}

附:C# 版與VB 版 15位的身份證號(hào)轉(zhuǎn)為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;}

到此,相信大家對(duì)“Java如何根據(jù)身份證號(hào)計(jì)算年齡”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

文章名稱:Java如何根據(jù)身份證號(hào)計(jì)算年齡
轉(zhuǎn)載源于:http://muchs.cn/article4/pdpeoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站建設(shè)Google、域名注冊(cè)、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作