中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java項目中根據身份證號計算年齡

發布時間:2021-02-24 16:20:41 來源:億速云 閱讀:357 作者:戴恩恩 欄目:編程語言

這篇文章主要介紹了怎么在Java項目中根據身份證號計算年齡,億速云小編覺得不錯,現在分享給大家,也給大家做個參考,一起跟隨億速云小編來看看吧!

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

第一代身份證: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;
}

以上就是億速云小編為大家收集整理的怎么在Java項目中根據身份證號計算年齡,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

偃师市| 茌平县| 长阳| 东阳市| 锡林郭勒盟| 上饶县| 芜湖县| 澄江县| 茌平县| 阿拉善左旗| 讷河市| 色达县| 天镇县| 怀宁县| 靖边县| 秦皇岛市| 祁东县| 祁连县| 汤原县| 溆浦县| 遵义市| 张掖市| 岗巴县| 敦煌市| 宣化县| 辽宁省| 河津市| 中阳县| 新晃| 谢通门县| 都江堰市| 团风县| 潜山县| 达尔| 广东省| 安图县| 庆阳市| 惠安县| 博野县| 寿宁县| 盐亭县|