找出计算年龄的最佳算法。要求:
1.精确到天,比如出生年月是2/18/2000,2/17/2008的时候年龄是7岁,而不是8岁。
2 返回数字型年龄
3 返回字符串,4岁以下的返回月,例如10 months,4岁以上的返回年,如 65 years
4 注意每个月的天数区别,闰年也要考虑
5 用sql, c#, asp, javascript, java 5种语言实现同样的算法,确保整个系统都可以用。

解决方案 »

  1.   

    这里有个生日的SQL
    包括2.29
    http://topic.csdn.net/u/20070913/18/b10217c0-78b3-4281-962a-4ba6e055a56b.html
      

  2.   

    有很大难度写出这样的SQL语句,你去问一下皱建
      

  3.   

    没什么难度的问题啊,思维慎密一些的人能够一次写好,不行的话就先写一堆unit test的test case辅助咯。你想要思路的话,用Reflector看DateTime的operator -运算,因为你所说的功能DateTime配合TimeSpan都能实现,你参考DateTime的源代码就是了。
      

  4.   

    asp的写法不懂,sql也不是很懂
      

  5.   

    哪有那么麻烦?这么简单的问题搞得很高难度似的。
    给你一段C#的算年龄的代码            DateTime dt = new DateTime(2006, 2, 14);
                int age = DateTime.Now.Year - dt.Year;
                if (dt.AddYears(age) > DateTime.Now)
                {
                    age--;
                }
                Console.WriteLine(age.ToString());            if (age < 4)
                {
                    int month = DateTime.Now.Month - dt.Month;
                    if (dt.Day > DateTime.Now.Day)
                    {
                        month--;
                    }                if (month < 0)
                    {
                        month += 12;
                    }
                    
                    month += age * 12;
                    Console.WriteLine(month.ToString() + " months");
                }
      

  6.   

    C#写个WebService, 然后javascript可以调用,java可以调用,ASP可以调用,C#更加可以调用~~~ 这样就4种都有了,何必实现4份呢?
    至于WebService里面实现那就简单了,求TimeSpan的 TotalMonth, 如果小于48就直接输出月,否则输出TotalYear ,然后格式化字符串。搞定~~保证精确到秒都行了。而且闰年闰月全考虑到了
    剩下最后一个问题,Sql的, 很简单,不要实现,数据库就干数据库的事情,如果你系统里有需要数据库做这件事情的,说明设计有问题,修改设计。
      

  7.   

    用sql,   c#,   asp,   javascript,   java   5种语言实现同样的算法,确保整个系统都可以用。
    ----------
    纯属吃饱了撑的。ps:看上去像家庭作业...
      

  8.   

    Click the link to solve your problem.Good luck!