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