GARANTIR DESCONTO

Fórum Diferença em meses #592077

29/03/2018

0

Pessoal, nao sou programador, mas gosto de inventar algumas coisas as vezes, e nessa eu estou tentando fazer um calculo de datas, estou usando o monthsgetwen:

edit2.Text := IntToStr(MonthsBetween(DateTimePicker1.Date, DateTimePicker2.Date));

legal, mas nao ta legal no calculo, as vezes ele mostra o periodo correto, as vezes mostra um mes a menos, por exemplo:

28/03/2018 e 28/03/2019 teria de mostrar 12 meses, ele mostra 11, mas em alguns momentos, sem fazer nada, apenas compilando ele mostra 12.

teria alguma coisa pra usar nesse caso, sem ser esse monthsbetwen?

eu preciso calcular meses, num contrato de 36 meses, quantos meses faltam pra terminar, e nesse calculo ele da meses a menos.
Deuzenildo Nascimento

Deuzenildo Nascimento

Responder

Post mais votado

29/03/2018

Veja se esta função ajuda:

function MesEntreDatas(DataInicial, DataFinal: TDateTime): integer;
var
  DataIni, DataFim: TDateTime;
  Dias, Meses, Anos: integer;
begin
  if DataInicial > DataFinal then
  begin
    DataIni := Trunc(DataFinal);
    DataFim := Trunc(DataInicial);
  end
  else
  begin
    DataIni := Trunc(DataInicial);
    DataFim := Trunc(DataFinal);
  end;

  Dias := Trunc(DayOfTheMonth(DataFim) - DayOfTheMonth(DataIni));
  Meses := Trunc(MonthOf(DataFim) - MonthOf(DataIni));
  Anos := Trunc(YearOf(DataFim) - YearOf(DataIni));

  if Dias < 0 then
    Dec(Meses);

  Result := Meses + (Anos * 12);
end;


Exemplo de uso:

Edit2.Text := IntToStr(MesEntreDatas(DateTimePicker1.Date, DateTimePicker2.Date));


Veja este link:
https://www.devmedia.com.br/forum/tem-bug-na-funcao-monthsbetween/214328

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 1

Mais Posts

30/04/2018

Deuzenildo Nascimento

Valeu, consegui fazer, foi um pouco diferente desse codigo ai, mas deu certo.
Responder

Gostei + 0

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

Aceitar