根据身份证获取性别,年龄,出生日期
analyzeIDCard(IDCard) {var getDataByIdCard = {};//获取用户身份证号码//获取性别if (parseInt(IDCard.substr(16, 1)) % 2 == 1) {getDataByIdCard.sexCode = '1' //男} else {getDataByIdCard.sexCode = '2' //女}//获取出生年月日var yearBirth = IDCard.substring(6, 10);var monthBirth = IDCard.substring(10, 12);var dayBirth = IDCard.substring(12, 14);var birthDate = yearBirth + "-" + monthBirth + "-" + dayBirth;//获取当前年月日并计算年龄var myDate = new Date();var monthNow = myDate.getMonth() + 1;var dayNow = myDate.getDay();var age = myDate.getFullYear() - yearBirth;if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {age--;}//得到年龄getDataByIdCard.birthDate = birthDate;getDataByIdCard.age = age;//返回性别和年龄return getDataByIdCard;},console.log(this.analyzeIDCard("340521197102145614")) //{age: 51,birthDate: "1971-02-14",sexCode: "1"}
根据出生日期获取年龄
getCurrentAgeByBirthDate(strBirthday){// 将出生日期的字符串通过"-"分割成数组const strBirthdayArr = strBirthday.split("-")// 拿到出生日期的年const birthYear = strBirthdayArr[0]// 拿到出生日期的月const birthMonth = strBirthdayArr[1]// 拿到出生日期的日const birthDay = strBirthdayArr[2]// 创建一个时间对象const d = new Date()// 拿到当前时间的年const nowYear = d.getFullYear()// 拿到当前时间的月const nowMonth = d.getMonth() + 1// 拿到当前时间的日const nowDay = d.getDate()// 如果出生日期的年等于当前时间的年if(nowYear === birthYear) return 0 // 返回周岁年龄 0,并终止函数执行// 如果如果出生日期的年不等于于当前时间的年,则拿到年之差const ageDiff = nowYear - birthYear ; // 年之差// 如果年之差是个负数,则表示用户输入的出生日期错误,晚于今天,返回 -1,并终止函数执行if(ageDiff < 0) return -1 // 返回错误 -1,并终止函数执行// 如果年之差是个正整数,但出生日期的月与当前时间的月不相等if(nowMonth !== birthMonth){// 拿到出生日期的日与当前时间的月之差const monthDiff = nowMonth - birthMonth; // 月之差// 如果月之差是个负数,则年之差 - 1后得到周岁年龄,否则直接得到周岁年龄return monthDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行}// 如果出生日期的月与当前时间的月相等,则拿到出生日期的日与当前时间的日之差const dayDiff = nowDay - birthDay;// 如果日之差是个负数,则年之差 - 1得到周岁年龄,否则直接得到周岁年龄return dayDiff < 0 ? ageDiff - 1 : ageDiff // 返回周岁年龄,并终止函数执行}console.log(this.getCurrentAgeByBirthDate("-01-01")) //2