获取delphi中的当前年,日和月

Dan*_*ott -4 delphi validation datetime

我基本上想要这个C#代码:

if (month > currentDate.Month || (day > currentDate.Day && month > currentDate.Month)) 
{
    age = currentDate.Year - year - 1;
}
else
{
    age = currentDate.Year - year;
}
Run Code Online (Sandbox Code Playgroud)

进入德尔福。但是我的问题是我不知道如何将当前的年,月和日作为整数获取,因此我可以进行一些计算。我已经在Google上点击了与此相关的所有结果,但没有一个对我有帮助。(确实不喜欢delphi,但是它是我们在计算机课上使用的语言)

Rem*_*eau 5

文字翻译如下:

uses
  ..., DateUtils;

if (month > MonthOf(Date)) or ((day > DayOf(Date)) and (month > MonthOf(Date)) then 
begin
  age := YearOf(Date) - year - 1;
end else
begin
  age := YearOf(Date) - year;
end;
Run Code Online (Sandbox Code Playgroud)

但这不是最好的翻译。如果没有其他Date()问题,那么如果代码在当前日期更改的午夜运行,则重复调用会导致问题。以下内容会更安全:

uses
  ..., SysUtils;

var
  wYear, wMonth, wDay: Word:
begin
  ...
  DecodeDate(Date, wYear, wMonth, wDay);
  if (month > wMonth) or ((day > wDay) and (month > wMonth) then 
  begin
    age := wYear - year - 1;
  end else
  begin
    age := wYear - year;
  end;
  ...
end;
Run Code Online (Sandbox Code Playgroud)

另外,看看DateUtils.YearsBetween()功能:

uses
  ..., SysUtils, DateUtils;

age := YearsBetween(Date, EncodeDate(year, month, day));
Run Code Online (Sandbox Code Playgroud)