目前中國(guó)居民身份證有15位和18位兩種雷绢,我們需要了解兩種身份證號(hào)碼各位的含義。
1理卑、15位身份證號(hào)碼各位的含義:
1翘紊、第l一6位數(shù)為行政區(qū)劃代碼; 2藐唠、第7—12位數(shù)為出生日期代碼帆疟; 3、第13---15位數(shù)為分配順序代碼宇立;
其中15位男為單數(shù)踪宠,女為雙數(shù)
2、18位身份證號(hào)碼各位的含義:
1妈嘹、第l一6位數(shù)為行政區(qū)劃代碼柳琢; 2、第7—14位數(shù)為出生日期代碼; 3柬脸、第14---17位數(shù)為分配順序代碼他去;4、校驗(yàn)碼倒堕;
校驗(yàn)碼是由身份證號(hào)碼編制單位按統(tǒng)一的公式計(jì)算出來(lái)的灾测,如果某人的尾號(hào)是0-9,都不會(huì)出現(xiàn)Ⅹ垦巴,但如果尾號(hào)是10媳搪,那么就得用Ⅹ來(lái)代替。因?yàn)槿绻?0做尾號(hào)骤宣,那么此人的身份證就變成了19位秦爆。其中17位男為單數(shù),女為雙數(shù)
1涯雅、通過(guò)身份證號(hào)碼查出生日期
/**
* 通過(guò)身份證號(hào)碼查出生日期
* @param {*} idCard
*/
function getBirthday (idCard){
var birthday = "";
if (idCard != null && idCard != "") {
if (idCard.length == 15) {
birthday = "19" + idCard.substr(6, 6);
} else if (idCard.length == 18) {
birthday = idCard.substr(6, 8);
}
birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-");
}
return birthday;
};
2鲜结、通過(guò)身份證判斷性別
/**
* 通過(guò)身份證判斷性別
* @param {身份證號(hào)碼} idCard
*/
function getSex (idCard){
var sexStr = "";
if (parseInt(idCard.slice(-2, -1)) % 2 == 1) {
sexStr = "男";
} else {
sexStr = "女";
}
return sexStr;
};
3、通過(guò)身份證號(hào)計(jì)算年齡
/**
* 通過(guò)身份證號(hào)計(jì)算年齡
* @param {身份證號(hào)碼} idCard
*/
function getAge (idCard) {
var len = (idCard + "").length;
if (len == 0) {
return 0;
} else {
if (len != 15 && len != 18) {
//身份證號(hào)碼只能為15位或18位其它不合法
return 0;
}
}
var strBirthday = "";
if (len == 18) {
//處理18位的身份證號(hào)碼從號(hào)碼中得到生日和性別代碼
strBirthday =
idCard.substr(6, 4) +
"/" +
idCard.substr(10, 2) +
"/" +
idCard.substr(12, 2);
}
if (len == 15) {
strBirthday =
"19" +
idCard.substr(6, 2) +
"/" +
idCard.substr(8, 2) +
"/" +
idCard.substr(10, 2);
}
//時(shí)間字符串里活逆,必須是“/”
var birthDate = new Date(strBirthday);
var nowDateTime = new Date();
var age = nowDateTime.getFullYear() - birthDate.getFullYear();
//再考慮月精刷、天的因素;.getMonth()獲取的是從0開(kāi)始的,這里進(jìn)行比較蔗候,不需要加1
if (
nowDateTime.getMonth() < birthDate.getMonth() ||
(nowDateTime.getMonth() == birthDate.getMonth() &&
nowDateTime.getDate() < birthDate.getDate())
) {
age--;
}
return age;
};