0
点赞
收藏
分享

微信扫一扫

JavaScript - 通过居民身份证号码获取年龄和性别(函数封装)

前言

当程序拿到用户身份证号后,可 “帮助” 用户算出年龄、性别、出生日期、地区等信息,

计算规则

身份证位数出生年份出生月份出生日期性别
15位(一代)7、8位9、10位11、12位15位 奇男偶女
18位(二代)7、8、9、10位11、12位13、14位17位 奇男偶女

函数封装

为此封装了一个函数(方便调用),做了身份证号是否合法验证,如下代码所示:

/**
 * 通过身份证号获取年龄、性别
 * @description 验证参数合法性,获取信息并返回
 * @param {String} icard - 二代居民身份证号码
 * @return Object
 */
function getIcard(icard) {

  // 验证是否纯数字(直接退出函数并返回false)
  if(!(/^\d+$/.test(icard))){ return false }

  // 验证是否二代居民身份证(直接退出函数并返回false)
  if(icard.length != 18) { return false }

  // 要返回的最终信息(如果都为null则未获取到)
  const result = {
    gender: null,//性别
    age: null//年龄
  }
  
  // 收集必要信息
  icard.substring(6,10) + "-" + 
  icard.substring(10,12) + "-" +
  icard.substring(12,14);

  // 获取性别
  if(parseInt(icard.substr(16,1)) %2 == 1) {
    // 男性
    result.gender = '男'
  } else {
    // 女性
    result.gender = '女'
  }

  // 获取年龄
  var myDate = new Date()
  var month = myDate.getMonth() + 1
  var day = myDate.getDate()
  var age = myDate.getFullYear() - icard.substring(6, 10) - 1
  if(icard.substring(10,12) < month || icard.substring(10,12) == 
  month && icard.substring(12,14) <= day){ age ++; }
  //年龄
  result.age = age

  // return
  return result;
},

使用方法

// 取到的年龄和性别
const data = this.getIcard('130355199811093358')

// 如果data为false,则证明身份证不合法
if(data){
  console.log(data)//{gender: '女', age: 22}
}

写在后面

如果本篇获取的信息不满足于您的项目(比如还需要获取生日),

您可以根据 “计算规则” 自己手动增加代码。

举报

相关推荐

0 条评论