C# 检验身份证号并提取生日和性别
/// <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# 检验身份证号并提取生日和性别相关推荐
- python身份验证(身份证号中提取出生日期及性别)。
name=input("请输入姓名:") sfz=input("请输入你的的身份证号:") year=sfz[6:10] //出生年份 month=sfz[10 ...
- 表格里已知身份证号,提取性别、出生日期、年龄、籍贯
算法有很多,只介绍个人觉得最简便的一种. 仅以18位身份证为例,15位身份证不适用. 性别: 身份证号第17位代表性别,奇数为男,偶数为女. =IF(MOD(MID(B2,17,1),2)=1,&qu ...
- 校验身份证_Excel每日一技巧:从身份证号可以提取哪些信息呢?
1.身份证号提取出生日期,方法如下: 只要在单元格内输入上述公式即可得出出生日期,是不是很简单.下面解释一下公式含义,text函数为指定文本格式函数,"0000-00-00"即为指 ...
- JavaScript - 从身份证号中获取生日
JavaScript - 从身份证号中获取生日 知识点 正则表达式(字面量) 字符串拆分 参数一为开始位置索引 S 想要N个字母,E = S+N,E为结束位置索引(开) let reg = /(^\d ...
- Excel根据身份证号批量提取出生日期
今天要和大家分享的是:Excel根据身份证号批量提取出生日期,先看动图演示,注意这里的身份证号为虚拟信息 1.首先打开表格 2.然后选中身份证数据 3.选择diy工具箱 4.选择身份证按钮 5.选择提 ...
- 使用js验证身份证号格式以及身份证号中的生日验证
由于不管是测试项目练手还是实际项目开发,都应该考虑数据的严密性和软件的通俗易懂的实用性,下面是我用js实现的验证身份证号格式以及身份证号中的生日验证代码 //生日移出点击事件验证身份证号中的生日验证 ...
- 用python实现身份证号的解析(输出性别,生日,生肖,星座)
用python实现身份证号的解析,输出性别,生日,生肖,星 实现功能: 1.解析生日 2.解析性别 3.解析所在省份 4.解析生肖,星座 代码如下: ID=input('请输入18位身份证号码:'); ...
- 【Mac版excel快捷键Control+E实用技巧2】excel如何快速从身份证号中提取出生年月日?
Mac版excel如何快速从身份证号中提取出生年月日? 我们可以手动将出生年月复制粘贴,但是,如果有几十几百个出生年月需要从身份证号中提取出来呢? 如今,Excel在我们生活和工作中的地位越来越重要, ...
- 检验身份证号的唯一性
检验身份证号的唯一性 controller //检验身份证号的唯一性 protected void card(HttpServletRequest request, HttpServletRespon ...
最新文章
- 字符串-字符串反转(双指针)
- mysql 让别人连接我的数据库
- windows 7(32/64位)GHO安装指南(序篇)~
- EscapeDataString URI 字符串太长
- 怎样彻底帮妹子解决weditor的安装的问题
- html5网页制作的基本步骤,网页制作流程介绍
- WPS文字常用快捷键大全
- (附源码)springboot社区疫情防控管理系统 毕业设计 164621
- opencc中文维基wiki百科简体繁体之间的转换解决
- 国王游戏——c++实现
- PySpark 之 连接变换 union、intersection、subtract、cartesian
- 博弈论 1.Introduction(组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏)
- Java excel导出支持2007以上版本
- 人体工程学游戏椅行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 无人驾驶出租车实行免费制是天上掉馅饼?No, 天下一定没有免费的午餐
- NXOPEN二次开发-CAM Operation转OperationBuilder对加工操作修改一些进给速度参数
- HP刀片服务器找不到网卡,HP BL460C G7刀片服务器阵列芯片故障的解决办法
- HDU(2212) DFS
- 嵌入式linux 第二章:软件下载
- 视频里的音乐怎么转换成mp3格式?