c#验证身份证号
2013-09-25 21:06
141 查看
using System; using System.Collections.Generic; using System.Text; namespace IDprocess { class Program { static void Main(string[] args) { Console.Write("请输入身份证号:"); string idnumber = Console.ReadLine().Trim(); ID oneID = new ID(idnumber); if (oneID.IsValid()) Console.WriteLine("您的出生日期是:" + oneID.getBirthday().ToString("yyyy年M月d日")); else Console.WriteLine("对不起,身份证号码错误!"); Console.Read(); } } class ID { private string IDnumber; public ID(string idnumber) { this.IDnumber = idnumber.Trim(); } //判断是否为有效的身份证号码: public bool IsValid() { int year, month,day ; if (IDnumber.Length == 15) { for (int i = 0; i < 15; i++) { //如果有非数字,则无效,返回false if (!char.IsNumber(IDnumber[i])) { return false; } } //取得出生年月日: year = Int32.Parse("19" + IDnumber.Substring(6, 2)); month = Int32.Parse(IDnumber.Substring(8, 2)); day = Int32.Parse(IDnumber.Substring(10, 2)); //调用方法IsValidBirthday判断是否为有效的出生年月日: return IsValidBirthday(year, month, day); } else if (IDnumber.Length == 18) { for (int i = 0; i < 17; i++) { if (!char.IsNumber(IDnumber[i])) { return false; } } if (!char.IsNumber(IDnumber[17]) && IDnumber[17] != 'X') return false; //取得出生年月日: year = Int32.Parse(IDnumber.Substring(6,4)); month = Int32.Parse(IDnumber.Substring(10, 2)); day = Int32.Parse(IDnumber.Substring(12, 2)); //调用方法IsValidBirthday判断是否为有效的出生年月日: return IsValidBirthday(year, month, day); } else return false; } //判断是否为有效的出生年月日: private bool IsValidBirthday(int year,int month,int day) { if(year==0) return false; if (month<1||month > 12) return false; //判断天数是否在指定年和月中所限制的天数范围之内。 if (day < 1 || day > DateTime.DaysInMonth(year, month)) return false; //判断出生日期是否大于现在的日期。 DateTime Birthday = new DateTime(year, month, day); if (Birthday > DateTime.Now) return false; return true; } //获取出生日期 public DateTime getBirthday() { DateTime Birthday; int year, month,day ; if (IsValid()) { if (IDnumber.Length == 15) { year = Int32.Parse("19" + IDnumber.Substring(6, 2)); month = Int32.Parse(IDnumber.Substring(8, 2)); day = Int32.Parse(IDnumber.Substring(10, 2)); Birthday = new DateTime(year, month, day); } else { year = Int32.Parse(IDnumber.Substring(6, 4)); month = Int32.Parse(IDnumber.Substring(10, 2)); day = Int32.Parse(IDnumber.Substring(12, 2)); Birthday = new DateTime(year, month, day); } } else Birthday = new DateTime(1, 1, 1); return Birthday; } } }
相关文章推荐
- 身份证号码验证 C#
- 特别收集一些身份证验证算法的C#版 C#实现的18位身份证格式验证算法
- 浅谈正则表达式验证身份证号码(C# winform)
- C#实现的18位身份证号码最新算法[验证部分]
- C#实现的18位身份证格式验证算法
- c# 字符串验证(邮箱、电话、数字、ip、身份证等)
- C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
- C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
- C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
- C#实现的18位身份证格式验证算法[转载]
- C# 扩展方法验证居民身份证
- C# 正则表达式验证代码(字母、数字、Email、网址、电话号码、汉字、身份证号码)
- C#验证邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP类.. (转)
- C#实现的18位身份证格式验证算法(转)
- C#中使用正则表达式验证电话号码、手机号、身份证号
- C#实现的18位身份证格式验证算法[转载] 选择自 mYang 的 Blog
- C#实现的18位身份证格式验证算法[转载]
- C#身份证验证
- C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
- C#实现的18位身份证格式验证算法