Delphi通过TDateEdit组件计算人员年龄

时间:2019-05-27 14:55:22

标签: datetime delphi date-arithmetic

我有一个非常简单的表单,其中包含TDateEditTButtonTLabel组件。 enter image description here

如果给定的日期是某人的生日,那么该年龄的最佳方法是什么?有人会如何在TDateEdit组件中的Delphi中执行此操作,然后在标签中显示年龄?

在组件中是否可能有内置功能或可以用来获取某人年龄的信息?我正在寻找最简单,最简单和最佳的方法。

4 个答案:

答案 0 :(得分:6)

这是一个计算某人年龄的功能。

它与RTL函数YearsBetween明显不同,因为它可以计算两个日期之间的年数;并且根本上与某人的年龄不同。

class Editor extends JFrame implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {

    }
}

答案 1 :(得分:2)

您可以使用System.DateUtils单元中的YearsBetween()函数来计算今天(您现在从函数中获得)和TDateEdit组件中的日期之间的年数,日期属性。

Label1.Text:= Trunc(YearsBetween(Now,DateEdit1.Date)).toString;

答案 2 :(得分:0)

我更喜欢伊恩·博伊德(Ian Boyd)的答案,但是对于那些坚持认为YearsBetween是必经之路的人来说,这是另一种选择。

如果Y是YearsBetween的结果,则正确的结果是Y或Y + 1。此例程调用YearsBetween并返回Y + 1。然后,它使用IncYear来查看答案是否太大。如果是,则返回Y。

这看起来似乎更简单,但是在幕后还需要做更多的工作。伊恩·博伊德(Ian Boyd)的答案就是您应该使用的答案。

function AgeInCompleteYears ( const nBirthDate   : tDateTime;
                              const nCurrentDate : tDateTime  ) : integer;
begin
  Result := 1 + DateUtils.YearsBetween ( nCurrentDate, nBirthDate );
  if DateUtils.IncYear ( nBirthDate, Result ) > nCurrentDate then
    dec ( Result );
end;

答案 3 :(得分:0)

function GetAge(BirthDate:TDateTime; RefDate:TDateTime=0):Integer;
begin
  if RefDate=0 then RefDate:= Today;
  Result := Trunc((RefDate- BirthDate) / 365.25)
end;