计算年龄,给定出生日期

bon*_*ond 1 c

鉴于出生日期,我将如何计算C的年龄?

例如,如果今天的日期是2010年4月20日,并且出生日期是12/08/86,那么年龄将是23岁,8个月和8天.

任何建议,将不胜感激.谢谢!

RJF*_*ner 6

仅一年(没有月/日):

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)


caf*_*caf 5

解决此类问题的方法是弄清楚如何使用铅笔和纸来解决问题 - 然后将其形式化为程序。

对于这个特定问题,这意味着在高层次上,“从当前日期减去出生日期”。对于这个减法,您使用在小学学习减法的相同算法的变体 - 从减去较低值的列(在本例中为“天”)开始,如有必要,从下一个较高值的列中借用. 例如,要从 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 月份的闰年。