En su día respondí con una función que calculaba la diferencia en años, meses y días a esta pregunta:
Obtener Dias, Meses y Años a partir de una cantidad de días, pero se puede modificar para añadir también la diferencia de horas, minutos y segundos entra las dos fechas:
Hay que dar solución al problema de meses con diferente número de días y años bisiestos.
Código Delphi
[-]
function RestaFechas(D1, D2:TDate): String;
var
i: integer;
dia0, mes0, ano0: WORD;
dia, mes, ano: WORD;
dias, meses, anos: WORD;
D: integer;
H: Extended;
begin
D:= Ceil(D2)-Ceil(D1);
H:= D2-D1-D;
dias:= 0;
meses:= 0;
anos:= 0;
DecodeDate(D1, ano0, mes0, dia0);
DecodeDate(D1, ano, mes, dia);
for i:= 0 to D-1 do
begin
D1:= D1+1;
inc(dias);
DecodeDate(D1, ano, mes, dia);
if dia = dia0 then
begin
inc(meses);
dias:= 0;
if mes = mes0 then
begin
meses:= 0;
inc(anos);
end;
end;
end;
Result:= IntToStr(anos) + ' años, ' + IntToStr(meses) + ' meses, ' + IntToStr(dias) + ' dias y ' + TimeToStr(H) + ' horas';
end;
Saludos.