根据18位身份证号,提取出此人的出生年月日,

根据18位身份证号,提取出此人的出生年月日,

package sun.rain.amazing;

import java.util.Date;

import org.junit.Test;

/**
 *  根据18位身份证号,提取出此人的出生年月日,
 *      并判断此人今年的年龄、性别
 * @author sunRainAmazing
 * 
 */
public class StringIdentity {
    public static String STR1 = "000026192504286365";//1125-04-28
    public static String STR2 = "00002619250520635X";//1125-05-20

    /**
     * 对应的年份为区间为[6,10)
     */
    @Test
    public void getAge(){
        Date date = new Date();
        String s1 = date.toString();
        System.out.println(s1);
//      String year = (String) s1.subSequence(s1.length()-4, s1.length());
        String year = s1.substring(s1.length()-4, s1.length());
//      String str = STR1.substring(6,10);
        int birthTime = Integer.parseInt(STR1.substring(6,10));
        int nowTime = Integer.parseInt(year);
        int realAge = nowTime - birthTime;
        System.out.println("这个人的年龄为:"+realAge);
    }


    /**
     * 身份证的倒数第二位 代表性别 奇数男 偶数女
     */
    @Test
    public void testIsMale(){

//      int  number = Integer.parseInt(STR1.substring(16,17));
//      System.out.println(number);
//      if(isMale(number)){
//          System.out.println("此人是男生");
//      }else{
//          System.out.println("此人是女生");
//      }

        System.out.println(
                isMale(Integer.parseInt(STR1.substring(16,17)))?"男生":"女生");

    }



    /**
     *  返回 true     代表是男生
     *  返回 false    代表是女生
     * @param number
     * @return
     */
    private static boolean isMale(int number){
        return number%2==0;
    }

}

你可能感兴趣的:(String相关操作)