鉴于出生日期,我将如何计算C的年龄?
例如,如果今天的日期是2010年4月20日,并且出生日期是12/08/86,那么年龄将是23岁,8个月和8天.
任何建议,将不胜感激.谢谢!
仅一年(没有月/日):
1)将日期格式化为yyyymmdd
2)从日期减去出生日期
3)删除最后4个数字
(语言不可知)
所以以你的榜样为例;
date 20/04/2010
birth 12/08/1986
Run Code Online (Sandbox Code Playgroud)
兑换
date 20100420
birth 19860812
Run Code Online (Sandbox Code Playgroud)
减去
20100420-19860812 = 239608
Run Code Online (Sandbox Code Playgroud)
丢掉最后4位数
23
Run Code Online (Sandbox Code Playgroud)
解决此类问题的方法是弄清楚如何使用铅笔和纸来解决问题 - 然后将其形式化为程序。
对于这个特定问题,这意味着在高层次上,“从当前日期减去出生日期”。对于这个减法,您使用在小学学习减法的相同算法的变体 - 从减去较低值的列(在本例中为“天”)开始,如有必要,从下一个较高值的列中借用. 例如,要从 2010-04-10 中减去 1986-09-15,您可以执行以下操作:
2010-04-10 -
1986-09-15
----------
Run Code Online (Sandbox Code Playgroud)
10 小于 15,因此您必须从月列中借用。这意味着月列减少了 1(到 3),而天数列增加了第 3 个月(3 月 - 31 日)的天数。您现在可以减去天数列:
2010-03-41 -
1986-09-15
----------
-26
Run Code Online (Sandbox Code Playgroud)
我们现在可以转到月列。3 小于 9,所以我们必须再次借用,这次是从年份开始。从年份中减去一个,然后将月份加 12(因为一年中总是有 12 个月),然后执行减法:
2009-15-41 -
1986-09-15
----------
-06-26
Run Code Online (Sandbox Code Playgroud)
我们现在可以计算年份 - 永远不需要在这里借用(除非您正在尝试计算未来出生的人的年龄!):
2009-15-41 -
1986-09-15
----------
23-06-26
Run Code Online (Sandbox Code Playgroud)
这意味着差异是23年6个月26天。
您现在可以将其转换为程序(提示:使用三个单独的整数变量表示年、月和日)。最棘手的部分是从月份列中借用 - 您需要知道该月有多少天,包括 2 月份的闰年。