1. 程式人生 > >Java-根據身份證號獲取年齡,性別,出生日期

Java-根據身份證號獲取年齡,性別,出生日期

不廢話,直接開始擼... 老鐵們給個贊,雙擊6666....

IdcardValidator類:用來校驗身份證的資訊

package com.aidongsports.backstagemanagement.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Pattern;
/**
* @Author: HONGLINCHEN
* @Description: 根據身份證號,使用Java編寫程式獲取年齡、性別、出生日期
* @Date: 2017-9-18 16:56
* @return:
*/
public class IdcardValidator { /** * 省,直轄市程式碼表: { 11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古", * 21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇", * 33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南", * 42:"湖北",43:"湖南",44:"廣東",45:"廣西",46:"海南",50:"重慶", * 51:"四川",52:"貴州",53:"雲南",54:"西藏",61:"陝西",62:"甘肅", * 63:"青海",64:"寧夏",65:"新疆",71:"臺灣",81:"香港",82:"澳門",91:"國外"} */
protected String codeAndCity[][] = { { "11", "北京" }, { "12", "天津" }, { "13", "河北" }, { "14", "山西" }, { "15", "內蒙古" }, { "21", "遼寧" }, { "22", "吉林" }, { "23", "黑龍江" }, { "31", "上海" }, { "32", "江蘇" }, { "33", "浙江" }, { "34", "安徽" }, { "35", "福建" }, { "36", "江西" }, { "37", "山東" }, { "41", "河南" }, { "42"
, "湖北" }, { "43", "湖南" }, { "44", "廣東" }, { "45", "廣西" }, { "46", "海南" }, { "50", "重慶" }, { "51", "四川" }, { "52", "貴州" }, { "53", "雲南" }, { "54", "西藏" }, { "61", "陝西" }, { "62", "甘肅" }, { "63", "青海" }, { "64", "寧夏" }, { "65", "新疆" }, { "71", "臺灣" }, { "81", "香港" }, { "82", "澳門" }, { "91", "國外" } }; private String cityCode[] = { "11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82", "91" }; // 每位加權因子 private int power[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; // 第18位校檢碼 private String verifyCode[] = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" }; /** * 驗證所有的身份證的合法性 * * @param idcard * @return */ public boolean isValidatedAllIdcard(String idcard) { if (idcard.length() == 15) { idcard = this.convertIdcarBy15bit(idcard); } return this.isValidate18Idcard(idcard); } /** * <p> * 判斷18位身份證的合法性 * </p> * 根據〖中華人民共和國國家標準GB11643-1999〗中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。 * 排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。 * <p> * 順序碼: 表示在同一地址碼所標識的區域範圍內,對同年、同月、同 日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配 給女性。 * </p> * <p> * 1.前1、2位數字表示:所在省份的程式碼; 2.第3、4位數字表示:所在城市的程式碼; 3.第5、6位數字表示:所在區縣的程式碼; * 4.第7~14位數字表示:出生年、月、日; 5.第15、16位數字表示:所在地的派出所的程式碼; * 6.第17位數字表示性別:奇數表示男性,偶數表示女性; * 7.第18位數字是校檢碼:也有的說是個人資訊碼,一般是隨計算機的隨機產生,用來檢驗身份證的正確性。校檢碼可以是0~9的數字,有時也用x表示。 * </p> * <p> * 第十八位數字(校驗碼)的計算方法為: 1.將前面的身份證號碼17位數分別乘以不同的係數。從第一位到第十七位的係數分別為:7 9 10 5 8 4 * 2 1 6 3 7 9 10 5 8 4 2 * </p> * <p> * 2.將這17位數字和係數相乘的結果相加。 * </p> * <p> * 3.用加出來和除以11,看餘數是多少? * </p> * 4.餘數只可能有0 1 2 3 4 5 6 7 8 9 10這11個數字。其分別對應的最後一位身份證的號碼為1 0 X 9 8 7 6 5 4 3 * 2。 * <p> * 5.通過上面得知如果餘數是2,就會在身份證的第18位數字上出現羅馬數字的Ⅹ。如果餘數是10,身份證的最後一位號碼就是2。 * </p> * * @param idcard * @return */ public boolean isValidate18Idcard(String idcard) { // 非18位為假 if (idcard.length() != 18) { return false; } // 獲取前17位 String idcard17 = idcard.substring(0, 17); // 獲取第18位 String idcard18Code = idcard.substring(17, 18); char c[] = null; String checkCode = ""; // 是否都為數字 if (isDigital(idcard17)) { c = idcard17.toCharArray(); } else { return false; } if (null != c) { int bit[] = new int[idcard17.length()]; bit = converCharToInt(c); int sum17 = 0; sum17 = getPowerSum(bit); // 將和值與11取模得到餘數進行校驗碼判斷 checkCode = getCheckCodeBySum(sum17); if (null == checkCode) { return false; } // 將身份證的第18位與算出來的校碼進行匹配,不相等就為假 if (!idcard18Code.equalsIgnoreCase(checkCode)) { return false; } } return true; } /** * 驗證15位身份證的合法性,該方法驗證不準確,最好是將15轉為18位後再判斷,該類中已提供。 * * @param idcard * @return */ public boolean isValidate15Idcard(String idcard) { // 非15位為假 if (idcard.length() != 15) { return false; } // 是否全都為數字 if (isDigital(idcard)) { String provinceid = idcard.substring(0, 2); String birthday = idcard.substring(6, 12); int year = Integer.parseInt(idcard.substring(6, 8)); int month = Integer.parseInt(idcard.substring(

相關推薦

Java-根據身份證獲取年齡性別出生日期

不廢話,直接開始擼... 老鐵們給個贊,雙擊6666.... IdcardValidator類:用來校驗身份證的資訊 package com.aidongsports.backstagemanagement.utils; import java.text.Pa

根據身份證,使用Java編寫程式獲取年齡性別出生日期

轉自:http://blog.csdn.net/dabing69221/article/details/9150819 程式設計師必須要有一個好的思想,程式碼有時候就體現了一個人的靈魂,所以理解需求比技術更重要! IdcardValidator類 [java] vi

java根據身份證獲取用戶年齡性別的工具類

throws 工具 java inf port 年份 sim 身份證 row import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import ja

Hive 根據身份證規則從身份證提取年齡性別

身份證號的規則不再贅述,需要注意目前一些老資料還是存在15位的身份證號,程式碼如下: select id_no, id_no, case when length(id_no) = 18

SQL 根據身份證號碼獲取年齡的函數

else months clas BE HA 格式 拼接 返回 weight 在數據庫的運用過程中,我們時常會碰到根據身份證號碼來獲取當前的年齡,今天我在這裏寫了一個函數,就是關於獲取年齡的 create or replace function FUNC_COMPARE_

Java中通過身份證解析出:年齡性別出生日期

Java中通過身份證解析出:年齡、性別、出生日期。下面是一個java類 package com.thinkgem.jeesite.modules.cyry; import com.thinkgem.jeesite.modules.wcbxx.dao.WcbxxDao;

根據身份證計算年齡

根據身份證號計算年齡 /// <summary> /// 計算年齡 /// </summary> /// <param name="str">18位身份證

java身份證合法性校驗並獲取根據身份證提取身份證相關資訊

原文地址:https://blog.csdn.net/ycb1689/article/details/52352147   /** * 身份證前6位【ABCDEF】為行政區劃數字程式碼(簡稱數字碼)說明(參考《GB/T 2260-2007 中華人民共和國行政區劃程式碼》): *

身份證獲取生日性別年齡演算法

import java.util.Calendar;import java.util.regex.Pattern;import com.zhongan.contacts.user.dto.ResultDTO;/** * 身份證演算法[計算性別,生日,年齡] * @author

java通過身份證號碼獲取出生日期性別年齡

身份證號碼: 15位:6位地址碼+6位出生年月日(900101代表1990年1月1日出生)+3位順序碼 18位:6位地址碼+8位出生年月日(19900101代表1990年1月1日出生)+3位順序碼+1位校驗碼 地區碼: 1、 第一、二位表示省(自治區、直

java根據身份證計算年齡

integer 計算 minus static get ins calendar bstr spa /** * 根據身份證計算年齡 * * @param idcard * @return */ public stat

sql server 根據身份證計算出生日期年齡的存儲過程

ttl 實現 分享 mst () 需要 poc getdate mtr 我這邊有一個業務,需要客戶填寫身份證號,自動計算他的出生日期和年齡 在sql中,具體的存儲過程實現是這樣的: /********************************************

BankCardUtils 根據銀行卡 獲取 銀行卡型別、銀行名稱和銀行編碼 自動格式化銀行卡、手機號、身份證輸入的工具類

BankCardUtils 專案地址:nanchen2251/BankCardUtils  簡介:根據銀行卡號 獲取 銀行卡型別、銀行名稱和銀行編碼 自動格式化銀行卡號、手機號、身份證號輸入的工具類 更多:作者   提 Bug  

資料庫練習題:學生表(學號,姓名性別系部年齡)選課表(學號課程成績)課程表(課程,課程名,學分)

資料庫中有如下三個表: 學生表(學號,姓名,性別,系部,年齡)選課表(學號,課程號,成績)課程表(課程號,課程名,學分) (1)、寫出建立以上三個表的sq語句 (2)、從選課表中查詢所有選課資訊,即學號、課程號、成績,並給成績加8分 (3)、從選課表中查詢選修課程號C02且該]課程考試及格的學生的學號

hive根據身份證判斷性別

select no_cer,case when (case when LENGTH(no_cer)=15 then substr(NO_CER,14,1) when  LENGTH(no_cer)=18 then su

java 通過身份證號碼得到使用者的性別年齡

package com.jeecms.cms.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map;

在JS中根據身份證計算出生日期年齡

1、根據身份證號計算出生日期 var identificationCardid=document.getElementById("identificationCardid").value;//取得身份

PHP根據銀行卡獲取銀行名稱(根據Java更改而來)

自己Java程式碼所得,勉強算是原創 <?php header("content-type:text/html;charset=utf-8"); /** * */ class GetBank { public static $ban

java 根據圖片地址獲取到圖片的大小單位kb或者Mb

/**       * byte(位元組)根據長度轉成kb(千位元組)和mb(兆位元組)       *        * @param bytes       * @return       */

java根據網頁URL獲取正文資訊並調整正文格式為段落顯示---(兩種方式)

WebCollector的正文抽取API都被封裝為ContentExtractor類的靜態方法。可以抽取結構化新聞,也可以只抽取網頁的正文(或正文所在Element)。需要了解的兩個類 :ContentExtractor : 封裝了正文抽取演算法和正文抽取的API,正文抽取