由身份证获取年龄,性别,出生年月日

根据给出的身份证获得对应的年龄、性别、出生年月日,
现在的身份证基本都是18位的,比如这个:110101197507280507
身份证前6位是所在地的code码(110101)代表身份证所在归属地,
第7位到第14位是出生年月日
第15-17位:顺序码,用来标识在同一地区同一天出生的人的顺序,其中第17位奇数代表男性,偶数代表女性。
第18位:校验码,用来检验身份证的有效性。

const IDCardUtlis = (function () {
//出生年月日
  const brithday = (cardNum: string) => {
    return cardNum.substring(6, 10) + '-' + cardNum.substring(10, 12) + '-' + cardNum.substring(12, 14)
  }
  //性别
  const sex = (cardNum: string) => {
    return parseInt(cardNum.substr(16, 1)) % 2 == 1 ? '男' : '女'
  }
  //年龄
  const age = (cardNum: string) => {
    var myDate = new Date()

    var month = myDate.getMonth() + 1

    var day = myDate.getDate()

    var age = myDate.getFullYear() - parseInt(cardNum.substring(6, 10)) - 1

    if (
      parseInt(cardNum.substring(10, 12)) < month ||
      (parseInt(cardNum.substring(10, 12)) == month && parseInt(cardNum.substring(12, 14)) <= day)
    ) {
      age++
    }
    return age
  }
  //对于身份证所在地偷懒了,
  //思路将code码放入定义的数组中,直接匹配身份证中的code
  //前两位是省,第三、四位是市,5、6位是县城/区
  return { brithday, age, sex }
})()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值