asp.net 怎样根据身份证号计算性别,生日,年龄,省份,城市?各位大侠帮忙了
解决方案 »
- image鼠标经过图像动态绑定图片问题
- IIS问题“The specified module could not be found. ”
- 同一个页面中,gridview外的button事件如何获取gridview某一列的值?
- SQL 2000和SQL 2005并存
- 想请人做一个这样的网站不知要花多少钱???
- 假如有一个变量 loop 在调试期间我可以在命令窗口里面输入 ? loop 就可以查到loop 在当时的值, 但是有曾经见到有点更厉害啊, 它只要输入
- 操作WORD的问题
- 关于Gridview
- 如何减少session占用资源???
- asp.net中上传大文件报错,server.scripttimeout=900还不行
- 如何单独的设置RadioButtonList1的CSS
- 查询问题
其他都好实现
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>CordBirthday</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript">
function showBirthday(val)
{
var birthdayValue;
if(15==val.length)
{ //15位身份证号码
birthdayValue = val.charAt(6)+val.charAt(7);
if(parseInt(birthdayValue)<10)
{
birthdayValue = '20'+birthdayValue;
}
else
{
birthdayValue = '19'+birthdayValue;
}
birthdayValue=birthdayValue+'-'+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11);
if(parseInt(val.charAt(14)/2)*2!=val.charAt(14))
document.all.sex.value='男';
else
document.all.sex.value='女';
document.all.birthday.value=birthdayValue;
}
if(18==val.length)
{ //18位身份证号码
birthdayValue=val.charAt(6)+val.charAt(7)+val.charAt(8)+val.charAt(9)+'-'+val.charAt(10)+val.charAt(11) +'-'+val.charAt(12)+val.charAt(13);
if(parseInt(val.charAt(16)/2)*2!=val.charAt(16))
document.all.sex.value='男';
else
document.all.sex.value='女';
if(val.charAt(17)!=IDCard(val))
{
document.all.idCard.style.backgroundColor='#ffc8c8';
}
else
{
document.all.idCard.style.backgroundColor='white';
}
document.all.birthday.value=birthdayValue;
}
} // 18位身份证号最后一位校验
function IDCard(Num)
{
if (Num.length!=18)
return false;
var x=0;
var y=''; for(i=18;i>=2;i--)
x = x + (square(2,(i-1))%11)*parseInt(Num.charAt(19-i-1));
x%=11;
y=12-x;
if (x==0)
y='1';
if (x==1)
y='0';
if (x==2)
y='X';
return y;
} // 求得x的y次方
function square(x,y)
{
var i=1;
for (j=1;j<=y;j++)
i*=x;
return i;
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<table align="center">
<tr>
<td align="center">身份证:<input type="text" name="idCard" id="idCard"></td>
</tr>
<tr>
<td align="center">性 别:<input type="text" name="sex" id="sex"></td>
</tr>
<tr>
<td align="center">生 日:<input type="text" name="birthday" id="birthday"></td>
</tr>
<tr>
<td align="center"><input type="button" value="OK"></td>
</tr>
</table>
</form>
</body>
</HTML>
得到的返回值是<product type="identitycard">
<code>身份证号码</code>
<location>省市县</location> //获得省市县
<birthday>生日</birthday> //获得生日 年龄
<gender>性别</gender> //m 男 f女
</product>
2.性别:奇数男,偶数女
3.校验码:
(1)十七位数字本体码加权求和公式
S = Ai * Wi, i = 2, ... , 18
Y = mod(S, 11)
i: 表示号码字符从右至左包括校验码字符在内的位置序号
Ai:表示第i位置上的身份证号码字符值
Wi:表示第i位置上的加权因子
i: 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
(2)校验码字符值的计算
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
中间八位DDDDDDDD是出生日期码,生日是多少,这八位数就是多少。例如身份证上出生日期为1999年1月4日,就是19990104。
第十五至十七位EFG是顺序号,随机生成,除了第十七位G上男单数,女双数外没有规律。
第十八位H为校验码,将前十七位号带入公式计算得出,计算的结果为0-10,10用X代替。