@ivujs/i-utils
Version:
前端模块化 JavaScript 工具库
96 lines (92 loc) • 2.91 kB
JavaScript
;
var index = require('../validate/index.cjs');
var index$1 = require('../date/index.cjs');
var idCard = require('../constants/id-card.cjs');
/**
* @module 身份证号码
*/
/**
* 根据身份证号码获取信息
* @description 能获取到 籍贯,出生日期,年龄,性别
* @param {string} idCard 身份证号码,支持一代15位和二代18位
* @returns {Object} 返回身份证信息对象
*/
function getInfoByIDCard(idCard) {
if (index.isNull(idCard))
return;
return {
// 省份
province: getProvinceByIDCard(idCard),
// 生日
birthday: getBirthdayByIDCard(idCard),
// 年龄
age: getAgeByIDCard(idCard),
// 性别
sex: getSexByIDCard(idCard),
};
}
/**
* 根据身份证号码获得生日
* @param {string} idCard 身份证号码,支持一代15位和二代18位
* @returns {string} 返回生日
*/
function getBirthdayByIDCard(idCard) {
if (index.isNull(idCard))
return;
// 15位身份证
if (idCard.length === 15) {
return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
}
// 18位身份证
if (idCard.length === 18) {
return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
}
}
/**
* 根据身份证号码获得年龄
* @param {string} idCard 身份证号码,支持一代15位和二代18位
* @returns {number} 返回年龄
*/
function getAgeByIDCard(idCard) {
if (index.isNull(idCard))
return;
const birthday = getBirthdayByIDCard(idCard);
if (birthday) {
return index$1.getAge(index$1.toDate(String(birthday)));
}
}
/**
* 根据身份证号码获得性别
* @param {string} idCard 身份证号码,支持一代15位和二代18位
* @returns {string} 返回性别
*/
function getSexByIDCard(idCard$1) {
if (index.isNull(idCard$1))
return;
// 15位身份证
if (idCard$1.length === 15) {
return Number(idCard$1.substring(14)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
}
// 18位身份证
if (idCard$1.length === 18) {
return Number(idCard$1.substring(16, 17)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
}
}
/**
* 根据身份证号码获得省份
* @param {string} idCard 身份证号码,支持一代15位和二代18位
* @returns {string} 返回省份
*/
function getProvinceByIDCard(idCard$1) {
if (index.isNull(idCard$1))
return;
const prefix = idCard$1.substring(0, 2);
if (prefix) {
return idCard.ID_CARD.PROVINCE[prefix];
}
}
exports.getAgeByIDCard = getAgeByIDCard;
exports.getBirthdayByIDCard = getBirthdayByIDCard;
exports.getInfoByIDCard = getInfoByIDCard;
exports.getProvinceByIDCard = getProvinceByIDCard;
exports.getSexByIDCard = getSexByIDCard;