Diferença em meses
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
Curtidas 0
Melhor post
Natanael Ferreira
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
GOSTEI 1
Mais Respostas
Deuzenildo Nascimento
29/03/2018
Valeu, consegui fazer, foi um pouco diferente desse codigo ai, mas deu certo.
GOSTEI 0