首页 > 代码库 > 根据身份证号中的日期判断某人是否已满18岁及是否已满60岁
根据身份证号中的日期判断某人是否已满18岁及是否已满60岁
在网上看到一个这样的算法,初时感觉很巧妙,
if (DateTime.Now.Subtract(time).Days / 365 >60)
后来觉得似乎有问题:
比如说:假定今天是2014年7月28日,某人1954年7月28日出生,根据这样算法得到的结果是:21915/365=60.04109589041096,大于60。如果1954年7月29日出生,在你我看来,此人不满60岁,而得到的结果是21914/365=60.03835616438356,仍然大于60,显然不正确
好吧,按照人类的思路:
1 private static bool IsAdult(DateTime birthday) 2 { 3 DateTime now = DateTime.Now; 4 if (now.Year - birthday.Year < 18)//如果年份小于18,直接返回false,未成年 5 { 6 return false; 7 } 8 else if (now.Year - birthday.Year == 18)//如果年份差等于18,则比较月份 9 {10 if (now.Month > birthday.Month)//年份等于18时,当前月份小于出生月份,则返回false,未成年11 {12 return false;13 }14 else if (now.Month == birthday.Month) //如果月份也相等,则比较日期15 {16 if (now.Day > birthday.Day) //年份等于18,月份相等时,如果当前日期小于出生日期,则返回false,未成年17 {18 return false;19 }20 }21 }22 return true;23 }
已满60岁同理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。