Salve, salve amigos
//Essa dica é um demostrativo de como se calcular a idade de uma pessoa em anos,
//meses e/ou dias //1º Declare na uses a unit DateUtils //2º Insira um Button e um Maskedit no Form //3º Na propriedade EditMask do Maskedit insira o formato Date e modifique //no campo Input Mask esse formato para 4 dígitos no ano e dê OK //4º No evento OnClick do Button insira o código e execute procedure TForm1.Button1Click(Sender: TObject); var Ano, Mes: Integer; Total_dias: Real;
begin //Descobrir a idade somente em anos, meses ou dias... ShowMessage(IntToStr(YearsBetween(Date, StrToDate(MaskEdit1.Text))) + ' anos'); ShowMessage(IntToStr(MonthsBetween(Date, StrToDate(MaskEdit1.Text))) + ' meses'); ShowMessage(IntToStr(DaysBetween(Date, StrToDate(MaskEdit1.Text))) + ' dias'); //ou //Descobrir a idade em anos, meses e dias, complicando um pouco mais... Total_dias := DaysBetween(Date, StrToDate(MaskEdit1.Text)); Ano := StrToInt(Copy(MaskEdit1.Text, 7, 4)); while Total_dias > 365 do begin Total_dias := Total_dias - DaysInAYear(Ano); Ano := Ano + 1; end;
Mes := StrToInt(Copy(MaskEdit1.Text, 4, 2));
while Total_dias > 28 do
begin
if Total_dias >= DaysInAMonth(Ano, Mes) then
begin
Total_dias := Total_dias - DaysInAMonth(Ano, Mes);
Mes := Mes + 1;
end
else
break;
end;
Ano := Ano - StrToInt(Copy(MaskEdit1.Text, 7, 4));
Mes := Mes - StrToInt(Copy(MaskEdit1.Text, 4, 2));
if StrToDate(MaskEdit1.Text) <= Date then
ShowMessage(IntToStr(Ano) + ' anos, ' + IntToStr(Mes) + ' meses e ' +
FloatToStr(Total_dias) + ' dias') else ShowMessage('Impossível realizar cálculo! Data > que a data atual!');
end;
Take care
Um comentário:
Adaptei algumas partes, pois usei datetimepicker no lugar dos maskedit...funcionou perfeitamente.
Obrigado por compartilhar seu conhecimento.
Abraço.
Postar um comentário