java根据身份证号码得到生日和性别
Posted mry6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java根据身份证号码得到生日和性别相关的知识,希望对你有一定的参考价值。
java根据身份证号码得到生日和性别
IDCards工具类
package com.liantuo.finance.utils;
//身份证工具类
public class IDCards {
/**
* 根据身份证号码得到生日,并返回性别
* @param num
* @return String[] string[0]生日 格式:19900510, string[1]性别
* 如果证件类型非法,则返回null
*/
public static String[] getDataByNo(String num) {
// 判断是否为空
if (num == null || num.trim().equals("")) {
return null;
}
//得到证件号码长度
int length = num.length();
// 判断是否为15或18位
if (length != 15 && length != 18) {
return null;
}
//如果证件号码为15位,转换为18位
if(length == 15){
num=uptoeighteen(num);
}
String[] data = new String[2];
// 得到生日
data[0] = num.substring(6, 14);
// 校验性别
data[1] = num.substring(14, 17);
// 性别代码为偶数是女性奇数为男性
if (Integer.parseInt(data[1]) % 2 == 0) {
data[1] = "女";
} else {
data[1] = "男";
}
return data;
}
// 15位身份证号码提升为18位
private static String uptoeighteen(String fifteencardid) {
String eightcardid = fifteencardid.substring(0, 6);
eightcardid = eightcardid + "19";
eightcardid = eightcardid + fifteencardid.substring(6, 15);
eightcardid = eightcardid + getVerify(eightcardid);
return eightcardid;
}
// 得到第18位的校验码
private static String getVerify(String eightcardid) {
int remaining = 0;
int[] wi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
int[] vi = { 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };
int[] ai = new int[18];
String returnStr = null;
try {
if (eightcardid.length() == 18) {
eightcardid = eightcardid.substring(0, 17);
}
if (eightcardid.length() == 17) {
int sum = 0;
String k = null;
for (int i = 0; i < 17; i++) {
k = eightcardid.substring(i, i + 1);
ai[i] = Integer.parseInt(k);
k = null;
}
for (int i = 0; i < 17; i++) {
sum = sum + wi[i] * ai[i];
}
remaining = sum % 11;
}
returnStr = remaining == 2 ? "X" : String.valueOf(vi[remaining]);
} catch (Exception ex) {
return null;
} finally {
wi = null;
vi = null;
ai = null;
}
return returnStr;
}
public static void main(String[] args) {
String[] dataByNo = getDataByNo("xxxxxxxxxxxx");
System.out.println(dataByNo[0]);
System.out.println(dataByNo[1]);
}
}
执行结果
以上是关于java根据身份证号码得到生日和性别的主要内容,如果未能解决你的问题,请参考以下文章