Java 身份证判断性别获取年龄详解编程语言

import com.alibaba.fastjson.JSON; 
import org.junit.Test; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.Map; 
 
/** 
 * @author ceshi 
 * @Title: CardJunitTest 
 * @ProjectName CardJunitTest 
 * @Description: TODO 
 * @date 2018/7/2622:53 
 */ 
public class CardJunitTest { 
 
    private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
     
    @Test 
    public void test(){ 
        try { 
            System.out.println(JSON.toJSON(identityCard18("**********"))); 
            System.out.println(JSON.toJSON(identityCard15("*********"))); 
        }catch (Exception e){ 
            e.printStackTrace(); 
        } 
    } 
 
    /** 
     * 18位身份证获取性别和年龄 
     * @param CardCode 
     * @return 
     * @throws Exception 
     */ 
    public static Map<String, Object> identityCard18(String CardCode) throws Exception { 
        Map<String, Object> map = new HashMap<String, Object>(); 
        // 得到年份 
        String year = CardCode.substring(6).substring(0, 4); 
        // 得到月份 
        String month = CardCode.substring(10).substring(0, 2); 
        //得到日 
        //String day=CardCode.substring(12).substring(0,2); 
        String sex; 
        // 判断性别 
        if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) { 
            sex = "女"; 
        } else { 
            sex = "男"; 
        } 
        // 得到当前的系统时间 
        Date date = new Date(); 
        // 当前年份 
        String currentYear = format.format(date).substring(0, 4); 
        // 月份 
        String currentMonth = format.format(date).substring(5, 7); 
        //String currentdDay=format.format(date).substring(8,10); 
        int age = 0; 
        // 当前月份大于用户出身的月份表示已过生日 
        if (Integer.parseInt(month) <= Integer.parseInt(currentMonth)) { 
            age = Integer.parseInt(currentYear) - Integer.parseInt(year) + 1; 
        } else { 
            // 当前用户还没过生日 
            age = Integer.parseInt(currentYear) - Integer.parseInt(year); 
        } 
        map.put("sex", sex); 
        map.put("age", age); 
        return map; 
    } 
 
    /** 
     * 15位身份证获取性别和年龄 
     * @param card 
     * @return 
     * @throws Exception 
     */ 
    public static Map<String, Object> identityCard15(String card) throws Exception { 
        Map<String, Object> map = new HashMap<String, Object>(); 
        //年份 
        String year = "19" + card.substring(6, 8); 
        //月份 
        String yue = card.substring(8, 10); 
        ////String day=card.substring(10, 12); 
        String sex; 
        if (Integer.parseInt(card.substring(14, 15)) % 2 == 0) { 
            sex = "女"; 
        } else { 
            sex = "男"; 
        } 
        // 得到当前的系统时间 
        Date date = new Date(); 
        //当前年份 
        String currentYear = format.format(date).substring(0, 4); 
        //月份 
        String currentMonth = format.format(date).substring(5, 7); 
        //String fday=format.format(date).substring(8,10); 
        int age = 0; 
        //当前月份大于用户出身的月份表示已过生日 
        if (Integer.parseInt(yue) <= Integer.parseInt(currentMonth)) { 
            age = Integer.parseInt(currentYear) - Integer.parseInt(year) + 1; 
        } else { 
            // 当前用户还没过生日 
            age = Integer.parseInt(currentYear) - Integer.parseInt(year); 
        } 
        map.put("sex", sex); 
        map.put("age", age); 
        return map; 
    } 
 
}

运行结果:

Java 身份证判断性别获取年龄详解编程语言

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18534.html

(0)
上一篇 2021年7月19日 21:13
下一篇 2021年7月19日 21:13

相关推荐

发表回复

登录后才能评论