使用Delphi,我需要一个函数来评估当前日期,看看它是否是,例如,当月的第三个星期日等.
在伪代码中:
function IsFirst(const CurrentDateTime: TDateTime; const Day: Word): Boolean;
/// Day can be 1-7 (monday to sunday)
begin
Result:= ??
end;
Run Code Online (Sandbox Code Playgroud)
计算本月的第二,第三,第四和最后一个时需要另一个功能.DateUtils似乎没有那样的东西.有任何想法吗?
Dav*_*nan 13
这个功能是你需要的:
function IsFirst(const DateTime: TDateTime; const Day: Word): Boolean;
begin
Result := (DayOfTheWeek(DateTime)=Day) and
InRange(DayOfTheMonth(DateTime), 1, 7);
end;
Run Code Online (Sandbox Code Playgroud)
第二次出现的等效函数是:
function IsSecond(const DateTime: TDateTime; const Day: Word): Boolean;
begin
Result := (DayOfTheWeek(DateTime)=Day) and
InRange(DayOfTheMonth(DateTime), 8, 14);
end;
Run Code Online (Sandbox Code Playgroud)
我相信你可以填写第三,第四和第五的细节.你可能更喜欢写一个像这样的通用函数:
function IsNth(const DateTime: TDateTime; const Day: Word;
const N: Integer): Boolean;
var
FirstDayOfWeek, LastDayOfWeek: Integer;
begin
LastDayOfWeek := N*7;
FirstDayOfWeek = LastDayOfWeek-6;
Result := (DayOfTheWeek(DateTime)=Day) and
InRange(DayOfTheMonth(DateTime), FirstDayOfWeek, LastDayOfWeek);
end;
Run Code Online (Sandbox Code Playgroud)