【js常用函数封装】获取年龄,根据身份证获取年龄,性别,生日
根据用户输入的年月日生日获取年龄
function getBirthStrToAge(birth) {
if(birth){
let today = new Date(); // 获取当前日期时间
let birthdate = new Date(birth); // 将生日字符串转换为日期格式
let age = today.getFullYear() - birthdate.getFullYear(); // 根据年份计算年龄
if (today < birthdate || today.getMonth() < birthdate.getMonth()) {
age--; // 如果今天的月份小于生日的月份或者今天的日期小于生日的日期,则年龄需要减1
}
return age
}else{
return null
}
}
const age = getBirthStrToAge("2002-09-19")
console.log(age); // 22
根据身份证号获取年月日
function getBirthBySfzh(sfzh) {
const year= sfzh.substr(6, 4); // 身份证年
const month = sfzh.substr(10, 2); // 身份证月
const date = sfzh.substr(12, 2); // 身份证日
const birth = `${year}-${month}-${date}`;
return birth;
};
const str = getBirthBySfzh("110105200508304224")
console.log(str); // 2005-08-30
根据身份证获取年龄
function getAge(identityCard) {
var len = (identityCard + "").length;
if (len == 0) {
return 0;
} else {
if ((len != 15) && (len != 18))//身份证号码只能为15位或18位其它不合法
{
return 0;
}
}
var strBirthday = "";
if (len == 18)//处理18位的身份证号码从号码中得到生日和性别代码
{
strBirthday = identityCard.substr(6, 4) + "/" + identityCard.substr(10, 2) + "/" + identityCard.substr(12, 2);
}
if (len == 15) {
strBirthday = "19" + identityCard.substr(6, 2) + "/" + identityCard.substr(8, 2) + "/" + identityCard.substr(10, 2);
}
//时间字符串里,必须是“/”
var birthDate = new Date(strBirthday);
var nowDateTime = new Date();
var age = nowDateTime.getFullYear() - birthDate.getFullYear();
if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
const age = getAge("110105200508304224")
console.log(age); // 19
身份证号获取性别
function checkGender(idCardNumber) {
// 获取身份证号码倒数第二位
var lastDigit = idCardNumber.slice(-2, -1);
// 判断奇偶性,并返回性别
if (lastDigit % 2 === 0) {
return "F";
} else {
return "M";
}
}
const sex = checkGender("110105200508304224")
console.log(sex); // F