js 通过身份证识别生日、年龄、性别

<script>
function IdCard(UUserCard,num){
   if(num==1){
       //获取出生日期
       birth=UUserCard.substring(6, 10) + "-" + UUserCard.substring(10, 12) + "-" + UUserCard.substring(12, 14);
    return birth;
   }
   if(num==2){
       //获取性别
       if (parseInt(UUserCard.substr(16, 1)) % 2 == 1) {
           //男
     return "男";
       } else {
           //女
     return "女";
       }
   }
   if(num==3){
        //获取年龄
        var myDate = new Date();
        var month = myDate.getMonth() + 1;
        var day = myDate.getDate();
        var age = myDate.getFullYear() - UUserCard.substring(6, 10) - 1;
        if (UUserCard.substring(10, 12) < month || UUserCard.substring(10, 12) == month && UUserCard.substring(12, 14) <= day) {
            age++;
        }
  return age;
 }
}
alert (IdCard('身份证号',3));
</script>

下面是大概的规则
18位身份证
前1~2位数字表示:所在省份的代码;
第3~4位数字表示:所在城市的代码;
第5~6位数字表示:所在区县的代码;
第7~14位数字表示:出生年、月、日;
第15~16位数字表示:所在地的派出所的代码;
第17位数字表示性别:奇数表示男性,偶数表示女性;
15位差距不大

前1~2位数字表示:所在省份的代码;
第3~4位数字表示:所在城市的代码;
第5~6位数字表示:所在区县的代码;
第7、8位为出生年份(两位数)
第9、10位为出生月份
第11、12位代表出生日期
第15位代表性别,奇数为男,偶数为女
原文地址:https://www.cnblogs.com/louby/p/4835687.html