由身份证号码得到生日Date

public static Date getBirthdayByIDCARD(String IDCard) {
    String myRegExpIDCardNo = "^\\d{6}(((19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\\d{3}([0-9]|x|X))|(\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\\d{3}))$";
    boolean valid =
            Pattern.matches(myRegExpIDCardNo, IDCard) || (IDCard.length() == 17 && Pattern.matches(myRegExpIDCardNo,
                                                                                                   IDCard.substring(
                                                                                                           0, 15)));
    if (!valid) {
        return null;
    }
    int birthYearSpan = 4;
    //如果是15位的证件号码
    if (IDCard.length() == 15) {
        birthYearSpan = 2;
    }

    //出生日期
    String year = (birthYearSpan == 2 ? "19" : "") + IDCard.substring(6, 6 + birthYearSpan);
    String month = IDCard.substring(6 + birthYearSpan, 6 + birthYearSpan + 2);
    String day = IDCard.substring(8 + birthYearSpan, 8 + birthYearSpan + 2);
    Calendar calendar = Calendar.getInstance();
    calendar.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day), 0, 0, 0);
    return calendar.getTime();

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值