Skip to content

【BUG】身份证工具-IdcardUtil.IsValid() 校验始终不通过 #57

@xushuangchao

Description

@xushuangchao

问题描述及重现代码:

IsValid() 方法校验始终不通过,15位和18位均有此类问题
15位和18为在区域校验均存在问题
且 获取生日信息、替换生日、替换性别、随机生成身份证号码 都无法正常使用。(生成随机身份证会导致堆栈溢出使程序崩溃退出,因为始终无法校验通过)

// c# code
// 验证身份证号码是否合法
var idcard = "110101200510284511";
// var idcard = "511121820301053";
var isValid = IdcardUtil.IsValid(idcard);
Console.WriteLine("身份证号码 {0} 是否合法:{1}", idcard, isValid);

// 获取身份证号码的生日信息
var birthday = IdcardUtil.GetBirthday(idcard);
Console.WriteLine("身份证号码 {0} 的生日为 {1}", idcard, birthday?.ToString("yyyy年MM月dd日"));

// 获取身份证号码的性别信息
var gender = IdcardUtil.GetGender(idcard);
Console.WriteLine("身份证号码 {0} 的性别为 {1}", idcard, gender == IdcardUtil.Gender.Male ? "男" : "女");

// 将身份证号码中的生日部分替换成指定的日期,并返回新的身份证号码
var newBirthday = new DateTime(1992, 4, 15);
var newIdcard1 = IdcardUtil.ReplaceBirthday(idcard, newBirthday);
Console.WriteLine("将身份证号码 {0} 中的生日部分替换成 {1},得到新的身份证号码 {2}", idcard, newBirthday.ToString("yyyyMMdd"), newIdcard1);

// 将身份证号码中的性别部分替换成指定的性别,并返回新的身份证号码
var newGender = IdcardUtil.Gender.Female;
var newIdcard2 = IdcardUtil.ReplaceGender(idcard, newGender);
Console.WriteLine("将身份证号码 {0} 中的性别部分替换成 {1},得到新的身份证号码 {2}", idcard, newGender == IdcardUtil.Gender.Male ? "男" : "女", newIdcard2);

// 生成一个随机的身份证号码
var randomIdcard = IdcardUtil.GenerateRandomIdcard();
Console.WriteLine("随机生成一个身份证号码:{0}", randomIdcard);

具体版本

2023.914.2 ~ 2023.917.1-pre-231010054442

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions