从身份证中提取出生日期

1.身份证号码相关知识:
在了解如何实现自动从身份证号码中提取出生年月、性别信息之前,首先需要了解身份证号码所代表的含义。我们知道,当今的身份证号码有15/18位之分。早期签发的身份证号码是15位的,现在签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。这两种身份证号码将在相当长的一段时期内共存。两种身份证号码的含义如下:

(1)15位的身份证号码:1~6位为地区代码,7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期,第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。

(2)18位的身份证号码:1~6位为地区代码,7~10位为出生年份(4位),11~12位为出生月份,13~14位为出生日期,第15~17位为顺序号,并能够判断性别,奇数为男,偶数为女。18位为效验位。

2.Java实现:
/**
* 获取生日辅助类
*
* @author huruifeng pm 10-30 15:23
*
*/
public class BirthdayUtil {
   
    /**
     * 根据身份证号码获取
     *
     * @param idCard
     * @return String
     */
    public static String getBirthdayByIdCard(String idCard) {
        String idCardNumber = idCard.trim();
        int idCardLength = idCardNumber.length();
        String birthday = null;
        if (idCardNumber == null || "".equals(idCardNumber)) {
            return null;
        }
        if (idCardLength == 18) {
            birthday = idCardNumber.substring(6, 10) + "-"
                    + idCardNumber.substring(10, 12) + "-"
                    + idCardNumber.substring(12, 14);
        }
        if (idCardLength == 15) {
            birthday = "19" + idCardNumber.substring(6, + "-"
                    + idCardNumber.substring(8, 10) + "-"
                    + idCardNumber.substring(10, 12);
        }
        return birthday;
    }
}

3.JS实现
// 从身份证中提取出生日期,不要错误提示
function getBirth() {
    var mycardtype = document.forms[0]["preenrollment.cardtype"].value;var mycardno = document.forms[0]["preenrollment.cardno"].value;var mylen = mycardno.length;if (mycardtype == basicInfo["cardtype"]["identity"]&&document.forms[0]["preenrollment.birthdate"].value=="") {if (mycardno != null && mycardno != "") {if (!checkCardNoAlert(mycardno)) {return false;} else {var mybyear;var mybmon;var mybday;var mybirth;if (mylen == 18) {mybyear = mycardno.substring(6, 10);mybmon = mycardno.substring(10, 12);mybday = mycardno.substring(12, 14);mybirth = mybyear + "-" + mybmon + "-" + mybday;}if (mylen == 15) {mybyear = mycardno.substring(6, ;mybmon = mycardno.substring(8, 10);mybday = mycardno.substring(10, 12);mybirth = "19" + mybyear + "-" + mybmon + "-" + mybday;}document.forms[0]["preenrollment.birthdate"].value = mybirth;}}}
}

猜你喜欢

转载自hrf472989050.iteye.com/blog/1756323