2009/8/28 Ricardo Diniz <ricardo...@yahoo.com.br>:
> Function ProximoDiaUtil (dData : TDateTime) : TDateTime;
> begin
>     case DayOfWeek(dData) of
>        1 : dData := dData + 1;
>        2 : dData := dData + 7;
>        3 : dData := dData + 6;
>        4 : dData := dData + 5;
>        5 : dData := dData + 4;
>        6 : dData := dData + 3;
>        7 : dData := dData + 2;
>     end;
>     ProximoDiaUtil := dData;
>     Result := dData;
> end;

function ProximaSegundaHojeInclusive(VData : TDateTime) : TDateTime;
begin
  Result := VData + ((9 - DayOfWeek(VData)) mod 7);
end;

ou

function ProximaSegundaHojeNaoConta(VData: TDateTime): TDateTime;
begin
  Result := VData + ((8 - DayOfWeek(VData)) mod 7) + 1;
end;

ou

function UltimaSegundaContandoComHoje(VData : TDateTime) : TDateTime;
begin
  Result := VData - ((5 + DayOfWeek(VData)) mod 7);
end;

Depende da necessidade.

Joao Morais

Responder a