如有不对的地方,请留言指正,共同进步,谢谢!
package com.zysoft.own_demo.utils; import java.text.SimpleDateFormat; import java.util.Date; /** * @author 黄继波 * @date 2018/1/18 */ public class IdCardUtil { /** * 获取 生日 * @param CardCode * @return */ public static String getBirthdayByIdCard(String CardCode){ Integer len = CardCode.length(); String bir; if(len==18){ bir = getBirthdayByIdCard18(CardCode); }else{ bir = getBirthdayByIdCard15(CardCode); } return bir; } /** * 获取 年龄 * @param CardCode * @return */ public static String getAgeByIdCard(String CardCode){ Integer len = CardCode.length(); String age; if(len==18){ age = getAgeByIdCard18(CardCode); }else{ age = getAgeByIdCard15(CardCode); } return age; } /** * 获取 性别 * @param CardCode * @return */ public static String getSexByIdCard(String CardCode){ Integer len = CardCode.length(); String sex; if(len==18){ sex = getSexByIdCard18(CardCode); }else{ sex = getSexByIdCard15(CardCode); } return sex; } /** * 18位身份证 * 获取 生日 * @param CardCode * @return */ private static String getBirthdayByIdCard18(String CardCode) { //身份证上的年月日 String idyear = CardCode.substring(6).substring(0, 4);// 得到年份 String idyue = CardCode.substring(10).substring(0, 2);// 得到月份 String idday = CardCode.substring(12).substring(0, 2);//得到日 String bir = idyear+"-"+idyue +"-"+ idday; return bir; } /** * 18位身份证 * 获取 性别 * @param CardCode * @return */ private static String getSexByIdCard18(String CardCode) { String sex = "2"; //未知 if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {// 判断性别 sex = "0"; //女 } else { sex = "1"; //男 } return sex; } /** * 18位身份证 * 获取 年龄 * @param CardCode * @return */ private static String getAgeByIdCard18(String CardCode){ //身份证上的年月日 String idyear = CardCode.substring(6).substring(0, 4);// 得到年份 String idyue = CardCode.substring(10).substring(0, 2);// 得到月份 String idday = CardCode.substring(12).substring(0, 2);//得到日 String idyr = idyue + idday + ""; //当前年月日 String year = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).substring(0, 4);// 当前年份 String yue = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).substring(5, 7);// 月份 String day = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).substring(8, 10); String yr = yue + day + ""; int age = 0; if (Integer.parseInt(idyr) <= Integer.parseInt(yr)) { // 表示生日已过 age = Integer.parseInt(year) - Integer.parseInt(idyear) + 1; } else {// 生日未过 age = Integer.parseInt(year) - Integer.parseInt(idyear); } return age + ""; } /** * 15位身份证 * 获取 生日 * @param CardCode * @return */ private static String getBirthdayByIdCard15(String CardCode) { //身份证上的年月日 String idyear = "19" + CardCode.substring(6, 8); String idyue = CardCode.substring(8, 10); String idday = CardCode.substring(10, 12); String bir = idyear+"-"+idyue +"-"+ idday; return bir; } /** * 15位身份证 * 获取 性别 * @param CardCode * @return */ private static String getSexByIdCard15(String CardCode) { String sex = "2"; //未知 if (Integer.parseInt(CardCode.substring(14, 15)) % 2 == 0) {// 判断性别 sex = "0"; //女 } else { sex = "1"; //男 } return sex; } /** * 15位身份证 * 获取 年龄 * @param CardCode * @return */ private static String getAgeByIdCard15(String CardCode){ //身份证上的年月日 String idyear = "19" + CardCode.substring(6, 8); String idyue = CardCode.substring(8, 10); String idday = CardCode.substring(10, 12); String idyr = idyue + idday + ""; //当前年月日 String year = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).substring(0, 4);// 当前年份 String yue = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).substring(5, 7);// 月份 String day = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).substring(8, 10); String yr = yue + day + ""; int age = 0; if (Integer.parseInt(idyr) <= Integer.parseInt(yr)) { // 表示生日已过 age = Integer.parseInt(year) - Integer.parseInt(idyear) + 1; } else {// 生日未过 age = Integer.parseInt(year) - Integer.parseInt(idyear); } return age + ""; } }