Bom dia amigo...
Tenho três funções q desenvolvi aqui no trabalho, veja se te ajuda:
Function CalcTime(Const TempoInic,TempoFim : TdateTime): string;
var
Calc : real;
begin
Calc:=Tempoparareal(TimeToStr(TempoFim))-Tempoparareal(TimeToStr(TempoInic));
if Calc < 0 then Calc:=Calc+24;
Result:=RealparaTempo(Calc,2);
end;
Function TempoparaReal(Const Tempo:string ):Real;
Var
P_1,P_2,P_3:string;
begin
P_1:=copy(Tempo,0,Pos(':',Tempo)-1);
P_3:= copy(Tempo,Pos(':',Tempo)+1,length(Tempo));
P_2:=copy(P_3,0,Pos(':',P_3)-1);
P_3:= copy(P_3,Pos(':',P_3)+1,length(P_3));
Result:= StrToInt(P_1)+(StrToInt(P_2))/60 +
(StrToInt(P_3)/3600);
end;
Function RealparaTempo(Const RealNum:Real; NumZerosHora:integer):String;
Var
Zeros,Hora,Minuto,Segundo:string;
Aux:variant;
i:integer;
begin
for i:=1 to NumZerosHora do
Zeros := Zeros+'0';
Aux:=Int(RealNum);
Hora:= FormatFloat(Zeros,Aux);
Minuto:= FloatToStr(Frac(RealNum));
Aux:= Int(StrToFloat(Minuto)*60);
Minuto:=FormatFloat('00',Aux);
Aux:= Frac(Frac(RealNum)*60);
Segundo:= FormatFloat('00',Round(Aux*60));
if StrToInt(Segundo) > 59 then
begin
Segundo:='00';
Minuto:=FormatFloat('00',StrToInt(Minuto)+1);
end;
if StrToInt(Minuto) > 59 then
begin
Minuto:='00';
Hora:=FormatFloat(Zeros,StrToInt(Hora)+1);
end;
Result:= Hora+':'+Minuto+':'+Segundo;
end;
[As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED] ou [EMAIL PROTECTED]
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html