身份证信息算法类

阅读: 评论:0

身份证信息算法类

身份证信息算法类


/*** 身份证信息算法类**/
public class CardUtil {public static Map<String, Object> getAgeAndSex(String idCardNo) {if (idCardNo == null) {return null;}if (idCardNo.length() == 15) {return getCarInfo15W(idCardNo);} else if (idCardNo.length() == 18) {return getCarInfo(idCardNo);} else {return null;}}/*** 根据身份证的号码算出当前身份证持有者的性别和年龄 18位身份证** @return* @throws Exception*/public static Map<String, Object> getCarInfo(String CardCode) {Map<String, Object> map = new HashMap<String, Object>();String year = CardCode.substring(6).substring(0, 4);// 得到年份String yue = CardCode.substring(10).substring(0, 2);// 得到月份// String day=CardCode.substring(12).substring(0,2);//得到日String sex;if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {// 判断性别// 女sex = "1";} else {// 男sex = "0";}Date date = new Date();// 得到当前的系统时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String fyear = format.format(date).substring(0, 4);// 当前年份String fyue = format.format(date).substring(5, 7);// 月份// String fday=format.format(date).substring(8,10);int age = 0;if (Integer.parseInt(yue) <= Integer.parseInt(fyue)) { // 当前月份大于用户出身的月份表示已过生age = Integer.parseInt(fyear) - Integer.parseInt(year) + 1;} else {// 当前用户还没过生age = Integer.parseInt(fyear) - Integer.parseInt(year);}map.put("sex", sex);map.put("age", age);return map;}/*** 15位身份证的验证** @param* @throws Exception*/public static Map<String, Object> getCarInfo15W(String card) {Map<String, Object> map = new HashMap<String, Object>();String uyear = "19" + card.substring(6, 8);// 年份String uyue = card.substring(8, 10);// 月份// String uday=card.substring(10, 12);//日String usex = card.substring(14, 15);// 用户的性别String sex;if (Integer.parseInt(usex) % 2 == 0) {// 女sex = "1";} else {// 男sex = "0";}Date date = new Date();// 得到当前的系统时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String fyear = format.format(date).substring(0, 4);// 当前年份String fyue = format.format(date).substring(5, 7);// 月份// String fday=format.format(date).substring(8,10);int age = 0;if (Integer.parseInt(uyue) <= Integer.parseInt(fyue)) { // 当前月份大于用户出身的月份表示已过生age = Integer.parseInt(fyear) - Integer.parseInt(uyear) + 1;} else {// 当前用户还没过生age = Integer.parseInt(fyear) - Integer.parseInt(uyear);}map.put("sex", sex);map.put("age", age);return map;}/*** 身份证提取出身日期** @param card* @return* @throws Exception*/public static Date getBirthdayForIdcard(String card)throws Exception {Date b = null;if (card.length() == 18) {String year = card.substring(6).substring(0, 4);// 得到年份String yue = card.substring(10).substring(0, 2);// 得到月份String ri = card.substring(12).substring(0, 2);// 得到日// String day=CardCode.substring(12).substring(0,2);//得到日SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");b = format.parse(year + "-" + yue + "-" + ri);} else if (card.length() == 15) {String uyear = "19" + card.substring(6, 8);// 年份String uyue = card.substring(8, 10);// 月份String uri = card.substring(10, 12);// 得到日SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");b = format.parse(uyear + "-" + uyue + "-" + uri);}return b;}/*** 用户身份证号码的打码隐藏加星号加*** @return 处理完成的身份证*/public static String idCardMask(String idCardNum) {String res = "";if (!StringUtils.isEmpty(idCardNum)) {StringBuilder stringBuilder = new StringBuilder(idCardNum);res = place(6, 14, "********").toString();}return res;}
}

本文发布于:2024-01-31 18:42:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170669772630569.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   身份证   信息
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23