package cn.idchecker.entity; /** * 身份证号码 * 例如:320105198209275127 -> * addr birth seq check * 320105 19820927 512 7 * @author rongxinhua * */ public class ID { private String num; //全长身份证号码 private String addr; //地址 private String birth; //生日 private String seq; //序号 private String check; //校验码 /** * 构造方法 1 * @param num 格式如:"320105198209275127" */ public ID(String num) { this.num = num; this.addr = num.substring(0, 6); this.birth = num.substring(6, 14); this.seq = num.substring(14,17); this.check = num.substring(17,18); } /** * 构造方法 2 * @param addr 地址码, 格式如:"320105" * @param birth 生日码,格式如:"19820927" * @param seq 顺序码,格式如:"512" * @param check 校验码,格式如:"7" */ public ID(String addr, String birth, String seq, String check) { this.addr = addr; this.birth = birth; this.seq = seq; this.check = check; this.num = addr + birth + seq + check; } /** * 分离身份证号码 * @return 字符数组 */ public char[] separate(){ return this.num.toCharArray(); } /** * 分离身份证号码 * @return 整型数组,最后一位若是'X',则返回10 */ public int[] separate2int(){ int length = 18; int[] ins = new int[length]; int i = 0; for( ; i < length - 1; i ++) { ins[i] = Integer.valueOf(num.substring(i, i+1)); } String last = num.substring(i, i+1); ins[i] = "X".equals(last) ? 10 : Integer.valueOf(last); return ins; } /** * 计算校验位 * @return */ public String caculateCheckCode(){ int total = 0; //校验值和 int length = 18; //身份证长度 int[] ins = new int[length]; int[] checkCodes = Checkcode.checkCodes; int i = 0; try{ for( ; i < length - 1; i ++) { ins[i] = Integer.valueOf(num.substring(i, i+1)); total += (ins[i]*checkCodes[i]); } } catch(NumberFormatException e) { return null; } int modResult = total % 11; return Checkcode.checkResult(modResult); } /** * 获取中文格式的出生年月日 * @return */ public String getFormatBirth(){ return birth.substring(0, 4) + "年" + birth.substring(4,6) + "月" + birth.substring(6,8) + "日"; } /** * 获取性别 * @return */ public String getSex() { return seq.charAt(2)%2 == 0 ? "女" : "男"; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getBirth() { return birth; } public void setBirth(String birth) { this.birth = birth; } public String getSeq() { return seq; } public void setSeq(String seq) { this.seq = seq; } public String getCheck() { return check; } public void setCheck(String check) { this.check = check; } public String getNum() { return num; } public void setNum(String num) { this.num = num; } }
最近下载更多
Levi1025zw LV9
7月1日
aaaabbbc LV1
2022年5月24日
zzs269285304 LV7
2020年10月29日
gww666 LV2
2019年6月5日
dongzhan LV12
2019年5月6日
张老师123456 LV7
2019年4月12日
安宇12345 LV15
2019年3月25日
yu7510 LV15
2019年1月15日
依然在路上 LV17
2019年1月2日
安安an LV17
2018年11月28日
最近浏览更多
Levi1025zw LV9
7月1日
栈道小生 LV10
5月29日
ClydeSon LV5
2023年12月28日
一起加油 LV5
2023年3月24日
eddie2260 LV2
2022年6月17日
微微笑的笑笑 LV3
2022年6月14日
miiiji
2022年6月10日
暂无贡献等级
aaaabbbc LV1
2022年5月24日
1306878374 LV13
2021年12月26日
zhaoxu123123 LV10
2021年9月9日