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.
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
Curtir tópico
+ 0
Responder
Post mais votado
29/03/2018
Veja se esta função ajuda:
Exemplo de uso:
Veja este link:
https://www.devmedia.com.br/forum/tem-bug-na-funcao-monthsbetween/214328
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
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
Clique aqui para fazer login e interagir na Comunidade :)