从身份证中提取出生日期

本文详细介绍了身份证号码中包含的个人信息,特别是如何通过不同长度的身份证号码(15位和18位)来准确提取出生年月和性别信息。同时,提供了Java和JS两种编程语言的具体实现代码,便于开发者在实际项目中应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.身份证号码相关知识:
在了解如何实现自动从身份证号码中提取出生年月、性别信息之前,首先需要了解身份证号码所代表的含义。我们知道,当今的身份证号码有15/18位之分。早期签发的身份证号码是15位的,现在签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。这两种身份证号码将在相当长的一段时期内共存。两种身份证号码的含义如下:

(1)15位的身份证号码:1~6位为地区代码,7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期,第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。

(2)18位的身份证号码:1~6位为地区代码,7~10位为出生年份(4位),11~12位为出生月份,13~14位为出生日期,第15~17位为顺序号,并能够判断性别,奇数为男,偶数为女。18位为效验位。

2.Java实现:
/**
* 获取生日辅助类
*
* @author huruifeng pm 10-30 15:23
*
*/
public class BirthdayUtil {

/**
* 根据身份证号码获取
*
* @param idCard
* @return String
*/
public static String getBirthdayByIdCard(String idCard) {
String idCardNumber = idCard.trim();
int idCardLength = idCardNumber.length();
String birthday = null;
if (idCardNumber == null || "".equals(idCardNumber)) {
return null;
}
if (idCardLength == 18) {
birthday = idCardNumber.substring(6, 10) + "-"
+ idCardNumber.substring(10, 12) + "-"
+ idCardNumber.substring(12, 14);
}
if (idCardLength == 15) {
birthday = "19" + idCardNumber.substring(6, 8) + "-"
+ idCardNumber.substring(8, 10) + "-"
+ idCardNumber.substring(10, 12);
}
return birthday;
}
}

3.JS实现
// 从身份证中提取出生日期,不要错误提示
function getBirth() {
var mycardtype = document.forms[0]["preenrollment.cardtype"].value;var mycardno = document.forms[0]["preenrollment.cardno"].value;var mylen = mycardno.length;if (mycardtype == basicInfo["cardtype"]["identity"]&&document.forms[0]["preenrollment.birthdate"].value=="") {if (mycardno != null && mycardno != "") {if (!checkCardNoAlert(mycardno)) {return false;} else {var mybyear;var mybmon;var mybday;var mybirth;if (mylen == 18) {mybyear = mycardno.substring(6, 10);mybmon = mycardno.substring(10, 12);mybday = mycardno.substring(12, 14);mybirth = mybyear + "-" + mybmon + "-" + mybday;}if (mylen == 15) {mybyear = mycardno.substring(6, 8);mybmon = mycardno.substring(8, 10);mybday = mycardno.substring(10, 12);mybirth = "19" + mybyear + "-" + mybmon + "-" + mybday;}document.forms[0]["preenrollment.birthdate"].value = mybirth;}}}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值