zoukankan      html  css  js  c++  java
  • 根据身份证号中的日期判断某人是否已满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岁同理

  • 相关阅读:
    Distinct Substrings(spoj 694)
    Musical Theme
    Milk Patterns(poj 3261)
    Repeated Substrings(UVAlive 6869)
    喵星球上的点名(bzoj 2754)
    滑雪与时间胶囊(bzoj 2753)
    莫比乌斯函数之和(51nod 1244)
    欧拉函数之和(51nod 1239)
    数表(bzoj 3529)
    欧拉函数模板
  • 原文地址:https://www.cnblogs.com/Sabre/p/3872904.html
Copyright © 2011-2022 走看看