Hola.
En la sección
Trucos el compañero
MaMu puso un codigo para
Calcular EDAD en años, meses y dias de una Persona.
Creo que con unas pocas modificaciones te serviría para el caso:
Código Delphi
[-]
...
type
TAntiguedad = record
year : Word;
month: Word;
day : Word;
end;
function Antiguedad(Desde, Hasta: TDate): TAntiguedad;
var
a1,m1,d1: Word;
a2,m2,d2: Word;
Year, Month, Day: Word;
begin
DecodeDate(Desde, a1, m1, d1);
DecodeDate(Hasta, a2, m2, d2);
Year := a2 - a1;
if ( m1 <= m2 ) then
Month := m2 - m1
else
begin
Month := m2 + 12 - m1;
Dec(Year);
end;
if ( d1 <= d2 ) then
Day := d2 - d1
else
begin
Day := d2 + MonthDays[IsLeapYear(a2), m2] - d1;
Dec(Month);
end;
if Month < 0 then
begin
Year := Year - 1;
Inc(Month, 12);
end;
Result.year := Year;
Result.month := Month;
Result.day := Day;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
d1, d2: TDate;
a: TAntiguedad;
begin
d1 := StrToDate('01/01/2017');
d2 := StrToDate('02/04/2018');
a := Antiguedad(d1, d2);
ShowMessageFmt('años:%d, meses:%d, días:%d',[a.year, a.month, a.day]);
d1 := StrToDate('29/12/2005');
a := Antiguedad(d1, Date());
ShowMessageFmt('años:%d, meses:%d, días:%d',[a.year, a.month, a.day]);
end;
(*) Fechas tomadas de tu primer mensaje y da como resultado: años: 1, meses: 3, días: 1
Saludos