Fórum Informar Data para todo dia 20 no mês ´tal´ #196350
21/11/2003
0
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
Curtir tópico
+ 0Posts
21/11/2003
Luineumann
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
Gostei + 0
21/11/2003
Sparch
Obrigado!! :)
Gostei + 0
21/11/2003
Denis
por exemplo. a 1ª data será 20/11/2003.
incmonth(date,1) // 20/12/2003 , e assim por diante.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)