/// <summary>
        /// 验证身份证号码
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public static bool CheckIDCard(string Id)
        {
            if (Id.Length == 18)
            {
                bool check = CheckIDCard18(Id);
                return check;
            }
            else if (Id.Length == 15)
            {
                bool check = CheckIDCard15(Id);
                return check;
            }
            else
            {
                return false;
            }
        }

/// <summary>
        /// 验证18位身份证格式
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        private static bool CheckIDCard18(string Id)
        {
            long n = 0;
            if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false)
            {
                return false;//数字验证
             }
            string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
            if (address.IndexOf(Id.Remove(2)) == -1)
            {
                return false;//省份验证
             }
            string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-");
            DateTime time = new DateTime();
            if (DateTime.TryParse(birth, out time) == false)
            {
                return false;//生日验证
             }
            string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');
            string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');
            char[] Ai = Id.Remove(17).ToCharArray();
            int sum = 0;
            for (int i = 0; i < 17; i++)
            {
                sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());
            }
            int y = -1;
            Math.DivRem(sum, 11, out y);
            if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower())
            {
                return false;//校验码验证
             }
            return true;//符合GB11643-1999标准
         }

/// <summary>
        /// 验证15位身份证格式
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        private static bool CheckIDCard15(string Id)
        {
            long n = 0;
            if (long.TryParse(Id, out n) == false || n < Math.Pow(10, 14))
            {
                return false;//数字验证
             }
            string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
            if (address.IndexOf(Id.Remove(2)) == -1)
            {
                return false;//省份验证
             }
            string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-");
            DateTime time = new DateTime();
            if (DateTime.TryParse(birth, out time) == false)
            {
                return false;//生日验证
             }
            return true;//符合15位身份证标准
         }

/// <summary>
        /// 根据身份证号获取生日
        /// </summary>
        /// <param name="IdCard"></param>
        /// <returns></returns>
        public static string GetBrithdayFromIdCard(string IdCard)
        {
            string rtn = "1900-01-01";
            if (IdCard.Length == 15)
            {
                rtn = IdCard.Substring(6, 6).Insert(4, "-").Insert(2, "-");
            }
            else if (IdCard.Length == 18)
            {
                rtn = IdCard.Substring(6, 8).Insert(6, "-").Insert(4, "-");
            }
            return rtn;
        }

/// <summary>
        /// 根据身份证获取性别
        /// </summary>
        /// <param name="IdCard"></param>
        /// <returns></returns>
        public static string GetSexFromIdCard(string IdCard)
        {
            string rtn;
            string tmp = "";
            if (IdCard.Length == 15)
            {
                tmp = IdCard.Substring(IdCard.Length - 3);
            }
            else if (IdCard.Length == 18)
            {
                tmp = IdCard.Substring(IdCard.Length - 4);
                tmp = tmp.Substring(0, 3);
            }
            int sx = int.Parse(tmp);
            int outNum;
            Math.DivRem(sx, 2, out outNum);
            if (outNum == 0)
            {
                rtn = "女";
            }
            else
            {
                rtn = "男";
            }
            return rtn;
        }

转载于:https://www.cnblogs.com/zhengwen/archive/2012/01/07/2315614.html

C# 检验身份证号并提取生日和性别相关推荐

  1. python身份验证(身份证号中提取出生日期及性别)。

    name=input("请输入姓名:") sfz=input("请输入你的的身份证号:") year=sfz[6:10] //出生年份 month=sfz[10 ...

  2. 表格里已知身份证号,提取性别、出生日期、年龄、籍贯

    算法有很多,只介绍个人觉得最简便的一种. 仅以18位身份证为例,15位身份证不适用. 性别: 身份证号第17位代表性别,奇数为男,偶数为女. =IF(MOD(MID(B2,17,1),2)=1,&qu ...

  3. 校验身份证_Excel每日一技巧:从身份证号可以提取哪些信息呢?

    1.身份证号提取出生日期,方法如下: 只要在单元格内输入上述公式即可得出出生日期,是不是很简单.下面解释一下公式含义,text函数为指定文本格式函数,"0000-00-00"即为指 ...

  4. JavaScript - 从身份证号中获取生日

    JavaScript - 从身份证号中获取生日 知识点 正则表达式(字面量) 字符串拆分 参数一为开始位置索引 S 想要N个字母,E = S+N,E为结束位置索引(开) let reg = /(^\d ...

  5. Excel根据身份证号批量提取出生日期

    今天要和大家分享的是:Excel根据身份证号批量提取出生日期,先看动图演示,注意这里的身份证号为虚拟信息 1.首先打开表格 2.然后选中身份证数据 3.选择diy工具箱 4.选择身份证按钮 5.选择提 ...

  6. 使用js验证身份证号格式以及身份证号中的生日验证

    由于不管是测试项目练手还是实际项目开发,都应该考虑数据的严密性和软件的通俗易懂的实用性,下面是我用js实现的验证身份证号格式以及身份证号中的生日验证代码 //生日移出点击事件验证身份证号中的生日验证 ...

  7. 用python实现身份证号的解析(输出性别,生日,生肖,星座)

    用python实现身份证号的解析,输出性别,生日,生肖,星 实现功能: 1.解析生日 2.解析性别 3.解析所在省份 4.解析生肖,星座 代码如下: ID=input('请输入18位身份证号码:'); ...

  8. 【Mac版excel快捷键Control+E实用技巧2】excel如何快速从身份证号中提取出生年月日?

    Mac版excel如何快速从身份证号中提取出生年月日? 我们可以手动将出生年月复制粘贴,但是,如果有几十几百个出生年月需要从身份证号中提取出来呢? 如今,Excel在我们生活和工作中的地位越来越重要, ...

  9. 检验身份证号的唯一性

    检验身份证号的唯一性 controller //检验身份证号的唯一性 protected void card(HttpServletRequest request, HttpServletRespon ...

最新文章

  1. 字符串-字符串反转(双指针)
  2. mysql 让别人连接我的数据库
  3. windows 7(32/64位)GHO安装指南(序篇)~
  4. EscapeDataString URI 字符串太长
  5. 怎样彻底帮妹子解决weditor的安装的问题
  6. html5网页制作的基本步骤,网页制作流程介绍
  7. WPS文字常用快捷键大全
  8. (附源码)springboot社区疫情防控管理系统 毕业设计 164621
  9. opencc中文维基wiki百科简体繁体之间的转换解决
  10. 国王游戏——c++实现
  11. PySpark 之 连接变换 union、intersection、subtract、cartesian
  12. 博弈论 1.Introduction(组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏)
  13. Java excel导出支持2007以上版本
  14. 人体工程学游戏椅行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  15. 无人驾驶出租车实行免费制是天上掉馅饼?No, 天下一定没有免费的午餐
  16. NXOPEN二次开发-CAM Operation转OperationBuilder对加工操作修改一些进给速度参数
  17. HP刀片服务器找不到网卡,HP BL460C G7刀片服务器阵列芯片故障的解决办法
  18. HDU(2212) DFS
  19. 嵌入式linux 第二章:软件下载
  20. 视频里的音乐怎么转换成mp3格式?

热门文章

  1. linux UPS状态,LINUX 与 UPS(转)
  2. 如何通俗易懂的解释PWM?
  3. Is it bst?
  4. 视频号直播间如何设置?
  5. 油腻的中年人,请对自己好一点
  6. VisionPro文档 -- 在单个作业里的多相机采集
  7. Springboot 集成邮件服务 QQ邮箱
  8. 什么是VR虚拟展厅,VR虚拟展厅怎么做有什么功能?
  9. ARP欺骗原理及欣向路由的先天免疫(转)
  10. 如何运用计算机巧记英语词汇,如何运用计算机巧记英语单词_记英语单词的技巧...