记一次 身份证号解析工具类

289 阅读1分钟

import moment from 'moment'
export default {
  /**
   *
   * 根据身份证号份编号 获取生日 默认格式 yyyy-MM-dd
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  getBirthByIdNumber(idNumber, format = 'YYYY-MM-DD') {
    return moment(idNumber.substring(6, 14)).format(format)
  },
  /**
   *
   * 根据身份证号获取 出生年份
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  getYearByIdNumber(idNumber) {
    return idNumber.substring(6, 10)
  },
  /**
   *
   * 根据身份证获取出生月份
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  getMonthByIdNumber(idNumber) {
    return idNumber.substring(10, 12)
  },

  /**
   *
   * 根据身份证编号获取 距离当前时间 的月数
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   * @returns
   */
  getMonthsAgeByIdNumber(idNumber) {
    return moment().diff(this.getBirthByIdNumber(idNumber), 'months')
  },

  /**
   *
   *根据身份编号获取号 获取年龄
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  getAgeByIdNumber(idNumber) {
    return idNumber.substring(10, 12)
  },
  /**
   *
   *根据身份编号获取生日天
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  getDayByIdNumber(idNumber) {
    return idNumber.substring(12, 14)
  },
  /**
   *
   * 根据身份证获取性别
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  getGenderByIdNumber(idNumber) {
    let sGender = '0' // 未知
    if (this.checkIdNumber(idNumber)) {
      let sCardNum = idNumber.substring(16, 17)
      if (parseInt(sCardNum) % 2 !== 0) {
        sGender = '1' // 男
      } else {
        sGender = '2' // 女
      }
    }
    return sGender
  },

  /**
   *
   * 检查是否是正确的身份证格式
   * @author hsc
   * @date 2018-11-12
   * @param {*} idNumber
   */
  checkIdNumber(idNumber) {
    var reg = /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/
    return reg.test(idNumber)
  }
}