Diferença em horas entre dois dias diferentes

20/11/2005

1

Olá amigos Delphianos. Bom Dia.

Gostaria de saber se algum de vocês sabem como faço para descobrir a diferença em horas de por exemplo: Data e Hora Inicial: 19/11/2005 20:51:25 e Data e Hora Final: 20/11/2005 01:04:05...

Quando calculo a diferença dentro do mesmo dia dá certo, porem, se o relógio passa para 00:05:00 do outro dia por exemplo o resultado fica errado...

Gostaria da ajuda de vocês, se alguem tiver uma função ou procedure que possa me ajudar, agradeço antecipadamente.

Até Breve!

Márcio M. Camilo
Caldas Novas - GO


Responder

Posts

20/11/2005

Crash

contando que 24 horas exatas eh contada como 1 entao 1 hora seria 1/24.

function TempoPassado(DataHoraIni, DataHoraFin: TDateTime): String;
var  
  Horas: TTime;
  Total: Extended;
  Hora, Minuto, Segundo, MSeg: word;
begin
  Total := DataHoraFin - DataHoraIni;
  Horas := Frac(Total);
  DecodeTime(Total, Hora, Minuto, Segundo, MSeg);
  Hora := Hora + Trunc(24 * Trunc(Total));
  Result := FormatFloat(´00´, Horas) + ´:´ + FormatFloat(´00´, Minutos) 
                + ´:´ + FormatFloat(´00´, Segundos);
end;


nao testei o codigo... mais qualquer coisas fala.

t+


Responder

20/11/2005

Edilcimar

use um campo DATETIME, aí quando vc fizer a diferença ele já faz a conta de forma correta


Responder

20/11/2005

Mmcamilo

contando que 24 horas exatas eh contada como 1 entao 1 hora seria 1/24.
function TempoPassado(DataHoraIni, DataHoraFin: TDateTime): String;
var  
  Horas: TTime;
  Total: Extended;
  Hora, Minuto, Segundo, MSeg: word;
begin
  Total := DataHoraFin - DataHoraIni;
  Horas := Frac(Total);
  DecodeTime(Total, Hora, Minuto, Segundo, MSeg);
  Hora := Hora + Trunc(24 * Trunc(Total));
  Result := FormatFloat(´00´, Horas) + ´:´ + FormatFloat(´00´, Minutos) 
                + ´:´ + FormatFloat(´00´, Segundos);
end;
nao testei o codigo... mais qualquer coisas fala. t+



Responder

20/11/2005

Mmcamilo

Testei seu codigo e ele realmente não funcionou...

Mas obrigado, sua intenção foi boa, se tiver alguma correção a fazer te agradeço novamente.

Att.

Márcio


Responder