校验身份证号
public static bool isCardId(string cardId) { if (cardId.Length == 18) { return isCardId18(cardId); } else if (cardId.Length == 15) { return isCardId15(cardId); } else { return false; } }
校验18位身份证号
public static bool isCardId18(string cardId) { long n = 0; if (long.TryParse(cardId.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(cardId.Replace('x', '0').Replace('X', '0'), out n) == false) { return false; //数字验证 } //地址验证 if (!areaInfo.ContainsKey(cardId.Remove(6))) return false; string birth = cardId.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 = cardId.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] != cardId.Substring(17, 1).ToLower()) { return false; //校验码验证 } return true; //符合GB11643-1999标准 }
校验15位身份证号
public static bool isCardId15(string cardId) { long n = 0; if (long.TryParse(cardId, out n) == false || n < Math.Pow(10, 14)) { return false; //数字验证 } //地址验证 if (!areaInfo.ContainsKey(cardId.Remove(6))) return false; string birth = cardId.Substring(6, 6).Insert(4, "-").Insert(2, "-"); DateTime time = new DateTime(); if (DateTime.TryParse(birth, out time) == false) { return false; //生日验证 } return true; //符合15位身份证标准 }
获取身份证地址
public static string getAddress(string cardId) { if (isCardId(cardId)) { string index = cardId.Substring(0, 6); return areaInfo[index].ToString(); } else { return null; } }
获取生日
public static string getBirthday(string cardId) { if (isCardId(cardId)) { if (isCardId18(cardId)) { return cardId.Substring(6, 8).Insert(4, "-").Insert(7, "-"); } else { return ("19" + cardId.Substring(6, 6)).Insert(4, "-").Insert(7, "-"); } } else { return null; } }
获取性别
public static string getSex(string cardId) { if (isCardId(cardId)) { return Convert.ToInt16(cardId.Substring(16, 1)) % 2 == 0 ? "女" : "男"; } else { return null; } }
根据出生日期,计算精确的年龄
public static int GetAge(string birthDay) { DateTime birthDate = DateTime.Parse(birthDay); DateTime nowDateTime = DateTime.Now; int age = nowDateTime.Year - birthDate.Year; //再考虑月、天的因素 if (nowDateTime.Month < birthDate.Month || (nowDateTime.Month == birthDate.Month && nowDateTime.Day < birthDate.Day)) { age--; } return age; }
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4