asp.net 怎样根据身份证号计算性别,生日,年龄,省份,城市?各位大侠帮忙了

解决方案 »

  1.   

    要有个身份证号与省份城市对应的库,或者有API,不过这个属于保密信息啊
    其他都好实现
      

  2.   

    <%@ Page language="c#" Codebehind="CordBirthday.aspx.cs" AutoEventWireup="false" Inherits="CodeDatum.birthday.CordBirthday" %>
    <!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>
      

  3.   

    http://topic.csdn.net/u/20081207/20/b895500f-3e08-4386-9dda-b969dd09c1b8.html
      

  4.   

    http://www.youdao.com/smartresult-xml/search.s?type=id&q=身份证号码这个可以做到
    得到的返回值是<product type="identitycard">
    <code>身份证号码</code>
    <location>省市县</location>  //获得省市县
    <birthday>生日</birthday> //获得生日 年龄
    <gender>性别</gender>   //m 男 f女
    </product>
      

  5.   

    1234567890ABCDEFGH省份代码城市代码地区代码生日EF性别校验码1.省份代码、城市代码、地区代码需要数据库支持
    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 
      

  6.   

    身份证号编号规律:AABBCC DDDDDDDD EFGH  130503 19990104 0010前六位为各地的行政区划码,AA表示省、自治区、直辖市,AABB表示地级市、自治州、盟,AABBCC表示县、市辖区、县级市。例如130503中,13表示河北,1305表示河北省邢台市,130503表示河北省邢台市桥西区。
    中间八位DDDDDDDD是出生日期码,生日是多少,这八位数就是多少。例如身份证上出生日期为1999年1月4日,就是19990104。
    第十五至十七位EFG是顺序号,随机生成,除了第十七位G上男单数,女双数外没有规律。
    第十八位H为校验码,将前十七位号带入公式计算得出,计算的结果为0-10,10用X代替。
      

  7.   

    1. 查询手机:http://www.yodao.com/smartresult-xml/search.s?type=mobile&q=手机号码 2. 查询IP:http://www.yodao.com/smartresult-xml/search.s?type=ip&q=IP地址 3. 查询身份证:http://www.yodao.com/smartresult-xml/search.s?type=id&q=身份证号码
      

  8.   

    以上返回的是XML格式,自己去解析