Get age from date of birth

Posted in DateTime

You can solve this problem by comparing number of month with number of current month and comparing number of day with number of current day, if on the first step was equal.

procedure TForm1.Button1Click(Sender: TObject);
var
  NowYear, NowMonth, NowDay: Word;
  Year, Month, Day: Word;
  YearsOld: Word;
begin
  if Edit1.Text<>'' then
  begin
    DecodeDate(Now, NowYear, NowMonth, NowDay);
    DecodeDate(StrToDateTime(Edit1.Text), Year, Month, Day);
    if NowMonth>Month then
      YearsOld:=NowYear-Year;
    if NowMonth=Day then
        YearsOld:=NowYear-Year;
      if NowDay<=Day then
        YearsOld:=NowYear-Year-1;
    end;
    Label2.Caption:=IntToStr(YearsOld)+' years old';
  end;
end;