1 /// <summary>
2 /// 根据身份证获取身份证信息
3 /// 18位身份证
4 /// 0地区代码(1~6位,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码)
5 /// 1出生年月日(7~14位)
6 /// 2顺序号(15~17位单数为男性分配码,双数为女性分配码)
7 /// 3性别
8 ///
9 /// 15位身份证
10 /// 0地区代码
11 /// 1出生年份(7~8位年,9~10位为出生月份,11~12位为出生日期
12 /// 2顺序号(13~15位),并能够判断性别,奇数为男,偶数为女
13 /// 3性别
14 /// </summary>
15 /// <param name="cardId"></param>
16 /// <returns></returns>
17 public string[] GetIdCardInfo(string cardId)
18 {
19 string[] info = new string[4];
20
21 if (string.IsNullOrEmpty(cardId))
22 {
23 return info;
24 }
25
26 try
27 {
28 System.Text.RegularExpressions.Regex regex = null;
29 if (cardId.Length == 18)
30 {
31 regex = new Regex(@"^\d{17}(\d|x|X)$");
32 if (regex.IsMatch(cardId))
33 {
34
35 info.SetValue(cardId.Substring(0, 6), 0);
36 info.SetValue(DateTime.ParseExact(cardId.Substring(6, 8), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1);
37 info.SetValue(cardId.Substring(14, 3), 2);
38 info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3);
39 }
40 }
41 else if (cardId.Length == 15)
42 {
43 regex = new Regex(@"^\d{15}");
44 if (regex.IsMatch(cardId))
45 {
46 info.SetValue(cardId.Substring(0, 6), 0);
47 info.SetValue(DateTime.ParseExact(cardId.Substring(6, 6), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1);
48 info.SetValue(cardId.Substring(12, 3), 2);
49 info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3);
50 }
51 }
52 }
53 catch (Exception ex)
54 {
55 info[0] = ex.Message;
56 }
57
58 return info;
59 }
来源:https://www.cnblogs.com/yxx24/p/10910402.html