Fórum Informar Data para todo dia 20 no mês ´tal´ #196350

21/11/2003

0

:roll:
Olá, preciso saber como eu faço para durante 10, 11, 12, 13, 14 meses apartir da data de hoje gerar datas que sejam assim, por exemplo:
-21/11/2003
-20/12/2003
-20/01/2004
-20/02/2004
....

com o vencimento todo dia 20, o que variaria seria o mês mas o ano depende do mês... Eu usei o (date + 30) por exemplo mas não fica legal por ter meses com 31 e um com 28 dias, dae quebra no meio a sequencia...

:oops: Agradeço toda e qualquer ajuda.


Sparch

Sparch

Responder

Posts

21/11/2003

Luineumann

experimente fazer

var
database, datames : tdatetime;
aa, mm, dd, ii, nromeses : word;
dataprestacoes : array of tdatetime;

database recebe a datainicial (em princípio o dia deve ser 20)
nromeses recebe a quantidade de meses a gerar
decodedate(database, aa, mm, dd);

setlength(dataprestacoes, nromeses);

for ii := 0 to nromeses
do begin
mm := mm + 1;
if mm = 13
then begin
mm := 1;
aa := aa + 1;
end;
datames := encodedate(aa, mm, dd) ou (encodedate(aa, mm, 20);

se quiser evitar sábado/domingo

if dayofweek(datames) = 1 // domingo
then datames := datames + 1; // próxima segunda feira
if dayofweek(datames) = 7 // sábado
then datames := datames + 2; // próxima segunda feira
dataprestacoes[ii] := datames;
end;

ao final desse loop

dataprestacoes[0] tem o vencimento da primeira prestação
dataprestacoes[1] tem a vencimento da segunda prestação
etc


Responder

Gostei + 0

21/11/2003

Sparch

:P

Obrigado!! :)


Responder

Gostei + 0

21/11/2003

Denis

Tb pode usar para aumentar um mes vc. pode usar a função incmonth

por exemplo. a 1ª data será 20/11/2003.

incmonth(date,1) // 20/12/2003 , e assim por diante.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar