Hola. Te voy a dar autorización de usar las siguientes rutinas.. siempre que pongas una referencia en tu programa...
Código:
Function jachHoursBetween(Time1, Time2 : TDateTime) : Double;
Begin
result := Time2 - Time1 * 24;
End;
Function jachMinutesBetween(Time1, Time2 : TDateTime) : Double;
Begin
result := (Time2 - Time1) * 1440;
End;
Function jachSecondsBetween(Time1, Time2 : TDateTime) : Double;
Begin
result := (Time2 - Time1) * 86400;
End;
Procedure jachHMSBetween(Time1, Time2 : TDateTime; var h,m,s : Word);
Begin
h := trunc(jachHoursBetween(Time1, Time2));
m := trunc(jachMinutesBetween(Time1, time2)) mod 60;
s := trunc(jachSecondsBetween(Time1, time2)) mod 60;
End;
Si time2 es menor a time1 te devolverá una cantidad negativa de horas/minutos/segundos. Si no queres este comportamiento... simplemente añadí un abs() a la llamada.
Las rutinas te devuelven un número que indica la cantidad total de horas, minutos
o segundos transcurrida entre dos fechas...
Si las fechas son:
Time1 = 21/04/2004 05:25:00 am
Time2 = 22/04/2004 05:26:01 am
Te devolverán:
HoursBetween => 24.0169444444444444
MinutesBetween => 1441.0166666666667777
SecondsBetween => 86461.0
Si te es mas útil.. podes usar el procedimiento jachHMSBetween, que te devuelve las horas, minutos
y segundos transcurridos entre dos fechas:
jachHMSBetween => h=24, m=1, s=1 (24:01:01)
Hasta luego.