Delphi 每月第一[星期一],每月第二[星期四]等
使用Delphi,我需要一个函数来计算当前日期,并查看它是否是,例如,一个月的第三个星期日,等等 在伪代码中:Delphi 每月第一[星期一],每月第二[星期四]等,delphi,datetime,Delphi,Datetime,使用Delphi,我需要一个函数来计算当前日期,并查看它是否是,例如,一个月的第三个星期日,等等 在伪代码中: function IsFirst(const CurrentDateTime: TDateTime; const Day: Word): Boolean; /// Day can be 1-7 (monday to sunday) begin Result:= ?? end; 需要另一个函数来计算一个月的第二、第三、第四和最后一个月。DateUtils似乎没有这样的东西。有什么想
function IsFirst(const CurrentDateTime: TDateTime; const Day: Word): Boolean;
/// Day can be 1-7 (monday to sunday)
begin
Result:= ??
end;
需要另一个函数来计算一个月的第二、第三、第四和最后一个月。DateUtils似乎没有这样的东西。有什么想法吗?这可以用简单的数学来完成
获取
dayofweek
并将DayOf
除以七。此函数就是您需要的:
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;
到目前为止,您尝试了什么?您的函数没有结果类型,您的意图从代码或问题的文本中不清楚。是的,他的意思可能是
mod
。我的意思是DayOf
,它应该给出与dayofmon
相同的结果,我应该把它分成两句话。关键是你可以用简单的数学来做。大卫的答案很好。@DavidHeffernan-我不是指答案,只是“除以”部分。看到DateTime
Perl模块的内部结构后,我怯懦地拒绝编写任何与日期计算相关的代码。@JensMühlenhoff好的,我现在明白了。