2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 校验身份证号-校验18位身份证号-校验15位身份证号-获取身份证地址-获取生日-获取性别-

校验身份证号-校验18位身份证号-校验15位身份证号-获取身份证地址-获取生日-获取性别-

时间:2023-12-14 01:32:55

相关推荐

校验身份证号-校验18位身份证号-校验15位身份证号-获取身份证地址-获取生日-获取性别-

校验身份证号

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;}

校验身份证号-校验18位身份证号-校验15位身份证号-获取身份证地址-获取生日-获取性别-根据出生日期 计算精确的年龄

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。