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,但是它是我们在计算机课上使用的语言)
文字翻译如下:
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)