利用身份证号通过javaScript获取年龄,性别,出生日期

目前中国居民身份证有15位和18位两种,我们需要了解两种身份证号码各位的含义。

1、15位身份证号码各位的含义:

1、第l一6位数为行政区划代码; 2、第7—12位数为出生日期代码; 3、第13---15位数为分配顺序代码;
其中15位男为单数,女为双数

2、18位身份证号码各位的含义:

1、第l一6位数为行政区划代码; 2、第7—14位数为出生日期代码; 3、第14---17位数为分配顺序代码;4、校验码;
校验码是由身份证号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现Ⅹ,但如果尾号是10,那么就得用Ⅹ来代替。因为如果用10做尾号,那么此人的身份证就变成了19位。其中17位男为单数,女为双数

1、通过身份证号码查出生日期
/**
 * 通过身份证号码查出生日期
 * @param {*} idCard
 */
function getBirthday (idCard){
  var birthday = "";
  if (idCard != null && idCard != "") {
    if (idCard.length == 15) {
      birthday = "19" + idCard.substr(6, 6);
    } else if (idCard.length == 18) {
      birthday = idCard.substr(6, 8);
    }

    birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-");
  }

  return birthday;
};
2、通过身份证判断性别
/**
 * 通过身份证判断性别
 * @param {身份证号码} idCard
 */
function getSex (idCard){
  var sexStr = "";
  if (parseInt(idCard.slice(-2, -1)) % 2 == 1) {
    sexStr = "男";
  } else {
    sexStr = "女";
  }
  return sexStr;
};
3、通过身份证号计算年龄
/**
 * 通过身份证号计算年龄
 * @param {身份证号码} idCard
 */
function getAge (idCard) {
  var len = (idCard + "").length;
  if (len == 0) {
    return 0;
  } else {
    if (len != 15 && len != 18) {
      //身份证号码只能为15位或18位其它不合法
      return 0;
    }
  }
  var strBirthday = "";
  if (len == 18) {
    //处理18位的身份证号码从号码中得到生日和性别代码
    strBirthday =
      idCard.substr(6, 4) +
      "/" +
      idCard.substr(10, 2) +
      "/" +
      idCard.substr(12, 2);
  }
  if (len == 15) {
    strBirthday =
      "19" +
      idCard.substr(6, 2) +
      "/" +
      idCard.substr(8, 2) +
      "/" +
      idCard.substr(10, 2);
  }
  //时间字符串里,必须是“/”
  var birthDate = new Date(strBirthday);
  var nowDateTime = new Date();
  var age = nowDateTime.getFullYear() - birthDate.getFullYear();
  //再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1
  if (
    nowDateTime.getMonth() < birthDate.getMonth() ||
    (nowDateTime.getMonth() == birthDate.getMonth() &&
      nowDateTime.getDate() < birthDate.getDate())
  ) {
    age--;
  }
  return age;
};

你可能感兴趣的:(利用身份证号通过javaScript获取年龄,性别,出生日期)