função incmonth delphi

Delphi

31/03/2021

Boa tarde,
Estou utilizando a função IncMonth do Delphi para somar meses e gerar parcelas na minha aplicação.
Me deparei com o seguinte problema:

Se a parcela vence dia 30 por exemplo. Quando chega no mes de fevereiro ela vai para dia 28, o que é correto,
o problema é que a partir disso os meses subsequentes continua com dia 28, nao volta para dia 30.

ex: 30/01/2021
28/02/2021
28/03/2021



Alguem poderia me ajudar? obrigado.
Andre Alves

Andre Alves

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

31/03/2021

É isso mesmo?

Normalmente o sistema de parcelamento acrescenta 30 dias, e não um mês.
Assim as datas seriam:

30/01/2021
01/03/2021
31/03/2021

Para obter o resultado que você quer, faça o incremento do mês a partir da data inicial.

datainicial := 2021-01-30;
dataparcela := datainicial;
parcela := 1;

repeat
   // faz alguma coisa com dataparcela
   showmessage( datetostr( dataparcela ) );

   // incrementa o mês da parcela
   dataparcela := incmonth(datainicial, parcela); // sempre incrementa a partir da data inicial, não da última data
   inc(parcela)

until parcela < 4;

GOSTEI 1

Mais Respostas

Andre Alves

Andre Alves

31/03/2021

É isso mesmo?

Normalmente o sistema de parcelamento acrescenta 30 dias, e não um mês.
Assim as datas seriam:

30/01/2021
01/03/2021
31/03/2021

Para obter o resultado que você quer, faça o incremento do mês a partir da data inicial.

datainicial := 2021-01-30;
dataparcela := datainicial;
parcela := 1;

repeat
   // faz alguma coisa com dataparcela
   showmessage( datetostr( dataparcela ) );









   // incrementa o mês da parcela
   dataparcela := incmonth(datainicial, parcela); // sempre incrementa a partir da data inicial, não da última data
   inc(parcela)

until parcela < 4;






Funcionou, eu estava incrementando errado a partir da ultima parcela gerada, incrementando sempre da parcela original funcionou
obrigado.
GOSTEI 0
POSTAR