java 根据身份证号码获取出生日期、性别、年龄

1.情景展示

  如何根据身份证号,计算出出生日期、性别、年龄?

2.解决方案

  从网上找的别人的,因为并没有实际用到,所以并未对其优化!

/**
 * 通过身份证号码获取出生日期、性别、年龄
 * @param certificateNo
 * @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男
 */
public static Map<string, string=""> getBirAgeSex(String certificateNo) {
    String birthday =  "" ;
    String age =  "" ;
    String sexCode =  "" ;

    int year = Calendar.getInstance().get(Calendar.YEAR);
    char [] number = certificateNo.toCharArray();
    boolean flag =  true ;
    if (number.length ==  15 ) {
        for ( int x =  0 ; x < number.length; x++) {
            if (!flag)
                return new HashMap<string, string="">();
            flag = Character.isDigit(number[x]);
        }
    }  else if (number.length ==  18 ) {
        for ( int x =  0 ; x < number.length -  1 ; x++) {
            if (!flag)
                return new HashMap<string, string="">();
            flag = Character.isDigit(number[x]);
        }
    }
    if (flag && certificateNo.length() ==  15 ) {
        birthday =  "19" + certificateNo.substring( 6 ,  8 ) +  "-" + certificateNo.substring( 8 ,  10 ) +  "-"
                + certificateNo.substring( 10 ,  12 );
        sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() -  3 , certificateNo.length()))
                %  2 ==  0 ?  "F" :  "M" ;
        age = (year - Integer.parseInt( "19" + certificateNo.substring( 6 ,  8 ))) +  "" ;
    }  else if (flag && certificateNo.length() ==  18 ) {
        birthday = certificateNo.substring( 6 ,  10 ) +  "-" + certificateNo.substring( 10 ,  12 ) +  "-"
                + certificateNo.substring( 12 ,  14 );
        sexCode = Integer.parseInt(certificateNo.substring(certificateNo.length() -  4 , certificateNo.length() -  1 ))
                %  2 ==  0 ?  "F" :  "M" ;
        age = (year - Integer.parseInt(certificateNo.substring( 6 ,  10 ))) +  "" ;
    }
    Map<string, string=""> map =  new HashMap<string, string="">();
    map.put( "birthday" , birthday);
    map.put( "age" , age);
    map.put( "sexCode" , sexCode);
    return map;
}</string,></string,></string,></string,></string,>

  根据身份证号提取出生日期

// 出生日期
String birthday =  "" ;
// 身份证号不为空
if (sfzh.length() ==  15 ) {
    birthday =  "19" + sfzh.substring( 6 ,  8 ) +  "-" + sfzh.substring( 8 ,  10 ) +  "-" + sfzh.substring( 10 ,  12 );
}  else if (sfzh.length() ==  18 ) {
    birthday = sfzh.substring( 6 ,  10 ) +  "-" + sfzh.substring( 10 ,  12 ) +  "-" + sfzh.substring( 12 ,  14 );
}

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2019-04-26 16:43  Marydon  阅读(7846)  评论(0编辑  收藏  举报