一个简单的工作日计算:

function getWorkDay(dtBegin:TDateTime;IncDays:Integer):TDateTime;
const
  days: array[1..7] of string=('7','1','2','3','4', '5','6');
var
  week1:string;
  x:integer;
  holiday:TStrings;
begin
  //初始化节假日,
  holiday:=TStringList.Create;
  //TODO:从数据库中取,此为演示
  holiday.Add('2014-10-01');
  holiday.Add('2014-10-02');  //and so on ...
  try
    //日期
    x:=1;
    while (x<=IncDays) do
    begin
      //判断是否周末
      week1:=days[DayOfWeek(dtBegin)];
      //今日周几
      if (week1='6') or (week1='7') or (holiday.IndexOf(FormatDateTime('yyyy-mm-dd',dtBegin))>=0) then
      begin
        dtBegin:=IncDay(dtBegin,1);
        Continue;
      end
      else
      begin
        dtBegin:=IncDay(dtBegin,1);
        x:=x+1;
      end;
    end;
    Result:=dtBegin;
  finally
    holiday.Free;
  end;
end;

 

posted on 2014-09-16 13:59  garfieldtom  阅读(291)  评论(0编辑  收藏  举报