Java 从身份证号码中获取出生日期、性别、年龄(15位和18位)

本文介绍了如何在Java中从15位和18位的身份证号码中提取出生日期、性别和年龄。对于15位身份证,第7至12位分别代表出生年月日,第15位决定性别;18位身份证的出生日期在第7至14位,性别由第17位确定。在解析前需确保身份证号码校验码正确。
摘要由CSDN通过智能技术生成

项目场景:

提示:这次做项目的时候遇到一个工具,整理出来以后可以直接使用
问题描述:给一个String 类型的 身份证号码,需要从这串数字中获取出生日期、性别、年龄
身份证号码分为 15 位 和18 位。
从1985年,开始颁发第一代居民身份证,而第一代身份证就是15位。分别是6位行政区划代码+6位出生日期+3位顺序码
近年来,我国开始颁发第二代居民身份证,身份证号码由第一代的15升级到18位,这18位数字分别是6位行政区划代码+8位出生日期+3位顺序码+1位校验码


问题分析

  • 15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。
  • 18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。

代码部分

前提是:身份证号码要正确(即校验码正确),所以调用 方法前要保证身份证号码正确

public class IdCardNumberMethod {
   

    /**
     * 获取出生日期
     *
     * @return 返回字符串类型
     */
    public String getBirthFromIdCard(String idCard) {
   
        if (idCard.length() != 18 && idCard.length() != 15) {
   
            return "请输入正确的身份证号码";
        }
        if (idCard.length() == 18) {
   
            String year = idCard.substring(6).substring(0, 4);// 得到年份
            String month = idCard.substring(10).substring(0, 2);// 得到月份
            String day = idCard.substring(12).substring(0, 2);// 得到日
            return (year + "-" + month + "-" + day);
        } else if (idCard.length() == 15) {
   
            String year = "19" + idCard.substring(6, 8);// 年份
            String month = idCard.substring(8, 10);// 月份
            String day = idCard.substring(10, 12);// 得到日
            return (year + "-" + month + "-" + day);
        }
        return null;
    }

    /**
     * 获取出生日期
     *
     * @return 返回日期格式
     */
    public Date getBirthDayFromIdCard(String idCard) throws ParseException {
   
        Date birth = null;
        if (idCard.length() == 18) {
   
            String year = idCard.substring(6).substring(0, 4);// 得到年份
            String month = idCard.
  • 18
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值