根据身份证获取信息的方法,基本都在这里了
package com.hzrc.acl.authentication.security.util;import java.util.Calendar;/*** 根据身份证号获取相关信息*/
public class getInfoByIdentityCodeUtil {/*** 校验身份证的正确性* @param identityCard* @return*/private static boolean getValidIdentityCard(String identityCard){if(identityCard == null || identityCard.length() == 0) return false;if(identityCard.length() != 18) return false;char[] identities = identityCard.toCharArray();int code = 0;int[] number = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};char[] numberArray = new char[]{'1','0','X','9','8','7','6','5','4','3','2'};for(int i =0 ; i < 17; i++){if(identities[i] < '0' || identities[i] > '9'){return false;}code += (identities[i] -'0') * number[i];}code = code % 11;if(numberArray[code] != identities[17]){return false;}return true;}/*** 根据身份证号获取性别* @param identityCode* @return 0位置 1男生 2女生*/public static Integer getGender(String identityCode) {if(identityCode == null || identityCode.length() == 0) return 0;int gender = 0;if(identityCode.length() == 18){//如果身份证号18位,取身份证号倒数第二位char c = identityCode.charAt(identityCode.length() - 2);gender = Integer.parseInt(String.valueOf(c));}else{//如果身份证号15位,取身份证号最后一位char c = identityCode.charAt(identityCode.length() - 1);gender = Integer.parseInt(String.valueOf(c));}if(gender % 2 == 1) return 1;return 2;}/*** 根据身份证号获取出生年月* @param identityCode* @return*/public static String getBirthday(String identityCode) {String birthday = null;if(identityCode == null || identityCode.length() == 0) return birthday;if (identityCode.length() == 15) {birthday = "19" + identityCode.substring(6, 8) + "-" + identityCode.substring(8, 10) + "-"+ identityCode.substring(10, 12);} else if (identityCode.length() == 18) {birthday = identityCode.substring(6, 10) + "-" + identityCode.substring(10, 12) + "-"+ identityCode.substring(12, 14);}return birthday;}/*** 根据身份证号获取年龄* @param identityCode* @return*/public static Integer getAge(String identityCode) {int age = 0;if(identityCode == null || identityCode.length() == 0) return age;int year = Calendar.getInstance().get(Calendar.YEAR);if (identityCode.length() == 15) {age = (year - Integer.parseInt("19" + identityCode.substring(6, 8)));} else if (identityCode.length() == 18) {age = (year - Integer.parseInt(identityCode.substring(6, 10)));}return age;}/*** 根据身份证号获取籍贯* @param identityCode* @return*/public static String getNaticePlace(String identityCode) {if(identityCode == null || identityCode.length() == 0) return null;int nativePlaceCode=Integer.parseInt(identityCode.substring(0, 6));return NativePlace.getNativePlace(nativePlaceCode);}public static void main(String[] args) {}}
获取籍贯,因为所有地区信息太多了,就不放在这里了,需要的可以评论,私发给你。
知是行之始,行是知之成。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
