JS根据身份证获取出生日期、性别、年龄等方法
前言
早期‘身份证号码’叫‘社会保障号’,为15位,1999年开始更名为公民身份证号码,即第二代身份证,为18位,且终身不变。本文方法均以18位身份证号为例。
获取出生日期
/**
* @param no 接收的字符串(身份证号)
* @param slipt 分割方式,默认:-
* @param isDate 是否只显示月日,默认:false
* @param isRreverse 是否为倒叙显示,如:日-月-年,默认:false
* @returns string 脱敏后的字符串
*/
const getBirth = (no = '', slipt = '-', isDate = false, isRreverse = false) => {
if (!no) return no
const toStr = no.toString()
const yearStr = toStr.substring(6, 10)
const dateStr = `${toStr.substring(10, 12)}${slipt}${toStr.substring(12, 14)}`
const reulst = isDate ? dateStr : `${yearStr}${slipt}${dateStr}`
return isRreverse ? reulst.split(slipt).reverse().join(slipt) : reulst
}
需求一:身份证号:12010120210622207X;显示为:2021-06-22
getBirth('12010120210622207X')
测试结果:
需求二:身份证号:12010120210622207X;显示为:2021/06/22
getBirth('12010120210622207X','/')
测试结果:
需求三:身份证号:12010120210622207X;显示为:06-22
getBirth('12010120210622207X','-',true)
测试结果:
需求四:身份证号:12010120210622207X;显示倒叙:22/06/2021
getBirth('12010120210622207X','/','',true)
测试结果:
获取性别方法
const getSex = (no = '') => {
if (!no) return no
const toStr = no.toString()
if (toStr.length < 17) return no
return Number(toStr.substring(16, 17)) % 2 ? '男' : '女'
}
使用方式:
getSex('12010120210622207X')
测试结果:
获取年龄
调用此方法的时候,需要依赖于获取出生日期方法;
const getAge = (no = '') => {
if (!no) return no
const toStr = no.toString()
const birth = new Date(getBirth(toStr))
const today = new Date()
let age = today.getFullYear() - birth.getFullYear()
if (
today.getMonth() < birth.getMonth() ||
(today.getMonth() == birth.getMonth() && today.getDate() < birth.getDate())
) {
age--
}
return age
}
使用方式:
getAge('12010120210622207X')
测试结果:
判断是否符合年龄
/**
* @param no 接收的字符串(身份证号)
* @param targetAge 目标年龄,默认:18
* @returns boolean 是否满足年龄
*/
const isMeetAge = (no = '', targetAge = 18) => {
if (!no) return no
return getAge(no) <= Number(targetAge)
}
需求一:身份证号:12010120210622207X;是否成年(年满18岁为成年)
isMeetAge('12010120210622207X') // ture 代表小于目标年龄,未成年;false 代表大于等于满足目标年龄,已经成年
测试结果:
需求二:身份证号:120101193308025435;是否小于60周岁
isMeetAge('120101193308025435', 60)
测试结果:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfheeek
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01