Ver Mensaje Individual
  #6  
Antiguo 07-08-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.

Última edición por escafandra fecha: 07-08-2022 a las 13:40:10.
Responder Con Cita