função incmonth delphi

31/03/2021

6

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.
Responder

Post mais votado

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;

Responder

Mais Posts

06/04/2021

Andre Alves

É 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.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar