我是新手,我想从出生日算出年龄,我不知道该怎么做。如果有人知道这个,请帮助我。提前致谢。
到目前为止我尝试过的是:
…
你可以在ABL中做的就是减去日期。它给出了以天为单位的年龄。然后你可以将它除以365并将其向下舍入以给出年龄。显然这不会考虑闰年,因此不是100%准确。
DEFINE VARIABLE dob AS date. DEFINE VARIABLE age AS INTEGER. ASSIGN dob = 09/16/1988 age = TRUNCATE(((TODAY - 03/25/1979) / 365),0). MESSAGE age VIEW-AS ALERT-BOX.
或者,如果您希望它包括闰年,那么您必须更加努力地工作。 我在这里做的是在出生日期添加年数,看看生日是否已经发生。如果没有,那么我需要1年的时间。可能有更优雅的解决方案,但它会完成这项工作!
DEFINE VARIABLE dob AS date. DEFINE VARIABLE age AS INTEGER. DEFINE VARIABLE comp AS DATE NO-UNDO. ASSIGN dob = 09/16/1988. comp = add-interval(dob,year(TODAY) - year(dob),"YEARS"). IF TODAY GT comp THEN age = year(TODAY) - year(dob). ELSE age = year(TODAY) - year(dob) - 1. MESSAGE age VIEW-AS ALERT-BOX.
在您的代码中,您只需数年,这不是正确的方法。它将显示一年的差异。您还需要根据月份和日期计算年数。因此,您可以尝试以下代码,这些代码也适用于闰年。
define var dob as date. define var vYears as int. define var age as int. assign dob = 09/16/1988. vYears = int(year(today) - year(dob)). if (month(today) < month(dob)) then do: age = vYears - 1. end. if (month(today) = month(dob)) then do: if (day(today) < day(dob)) then do: age = vYears - 1. end. else do: age = vYears. end. end. if (month(today) > month(dob)) then do: age = vYears. end. message age view-as alert-box.
使用 间隔 功能。
define var dob as date initial 09/16/1988. message interval( today, dob, "years" ) view-as alert-box.
返回29(只要今天是今年16日之前) - 处理闰年也很好。