Ver Mensaje Individual
  #8  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita