使用Delphi,我需要一个函数来评估当前日期并查看它是否,例如,该月的第三个星期日等。
在伪代码中:
function IsFirst(const CurrentDateTime: TDateTime; const Day: Word): Boolean;
/// Day can be 1-7 (monday to sunday)
begin
Result:= ??
end;
需要另一个函数来计算月份的第二,第三,第四和最后一个。 DateUtils似乎没有那样的东西。有什么想法吗?
答案 0 :(得分:13)
此功能是您所需要的:
function IsFirst(const DateTime: TDateTime; const Day: Word): Boolean;
begin
Result := (DayOfTheWeek(DateTime)=Day) and
InRange(DayOfTheMonth(DateTime), 1, 7);
end;
第二次出现的等效函数是:
function IsSecond(const DateTime: TDateTime; const Day: Word): Boolean;
begin
Result := (DayOfTheWeek(DateTime)=Day) and
InRange(DayOfTheMonth(DateTime), 8, 14);
end;
我相信你可以填写第三,第四和第五的细节。您可能更喜欢编写一个这样的通用函数:
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;
答案 1 :(得分:4)
这可以使用简单的数学运算来完成。
获取DayOfTheWeek
并将DayOf
除以7。