根据身份证号中的日期判断某人是否已满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         }
View Code

 

已满60岁同理

转载于:https://www.cnblogs.com/Sabre/p/3872904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值