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,
+ "-"
+ 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,
;mybmon = mycardno.substring(8, 10);mybday = mycardno.substring(10, 12);mybirth = "19" + mybyear + "-" + mybmon + "-" + mybday;}document.forms[0]["preenrollment.birthdate"].value = mybirth;}}}
}