2009/8/31 Richardson Freddo <mjrkon...@yahoo.com.br>:
> Bom dia pessoal.
>
> Usei a funçao:
>
> function ProximaSegundaHojeI nclusive( VData : TDateTime) : TDateTime;
> begin
> Result := VData + ((9 - DayOfWeek(VData) ) mod 7);
> end;
>
> foi exatamente o que eu estava procurando. Ele aponta para a segunda feira 
> vigente, ou seja, da semana corrente.

Ele aponta para a _próxima_ segunda feira, hoje inclusive, tal qual o
nome está informando. Se o dia for terça em diante, o retorno é a
próxima segunda feira.

O que você quer deve ser:

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

Se você quiser que, quando seja domingo, ele avance um dia, então pode
fazer assim:

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

Joao Morais

Responder a