java 跟据身份证识别性别年龄
java 跟据身份证识别性别年龄
package com.bdzk.sys.config.utils;import java.text.SimpleDateFormat;
import java.util.Date;
/*** 跟据身份证识别性别年龄* @author mujinlong* @email 885394406@qq.com* @微信 GTBB878* @since 2023-02-17 15:59:36*/
public class CertificateUtils {/*** @author mujinlong* 根据身份证计算性别* @param idNumber 身份证号码* @return 识别为女性 返回1 识别为男性返回2* @throws IllegalArgumentException*/public static Integer judgeGender(String idNumber) throws IllegalArgumentException {if (idNumber.length() != 18 && idNumber.length() != 15) {return 0;}int gender = 0;if (idNumber.length() == 18) {//如果身份证号18位,取身份证号倒数第二位char c = idNumber.charAt(idNumber.length() - 2);gender = Integer.parseInt(String.valueOf(c));} else {//如果身份证号15位,取身份证号最后一位char c = idNumber.charAt(idNumber.length() - 1);gender = Integer.parseInt(String.valueOf(c));}if (gender % 2 == 1) {//识别为男return 2;} else {//识别为女性return 1;}}/*** @author mujinlong* 根据身份证计算年龄* @param idNumber 身份证号码* @return 年龄*/public static Integer getAgeFromIdcard(String idNumber){if (idNumber.length() != 18 && idNumber.length() != 15) {throw new IllegalArgumentException("身份证号长度错误");}String year;String monthDay;if (idNumber.length() == 18) {year = idNumber.substring(6,10);monthDay = idNumber.substring(10,14);} else {year = "19" + idNumber.substring(6, 8);monthDay = idNumber.substring(8, 12);}//获取当前时间字符串如:2022-1128String nowTimeStr = new SimpleDateFormat("yyyy-MMdd").format(new Date());String yearNow = nowTimeStr.substring(0, 4);// 当前年份String monthDayNow = nowTimeStr.substring(5, 9);// 当前月日int age = Integer.parseInt(yearNow) - Integer.parseInt(year);//age减一的情况 :用户月日大于当前月日(开头可以为0的4位数int)if (Integer.parseInt(monthDay) > Integer.parseInt(monthDayNow)) {age = age - 1;}return age;}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
