[firebase-br] RES: Converter segundos em HH:MM:SS
Wilson Mota - GMail
wmotasjrp em gmail.com
Sex Ago 6 08:47:48 -03 2010
Bom dia Zottis, muito obrigado pela resposta.
Você sabe com extrair um inteiro ou fração de um valor em SQL, porque eu
preciso usar como procedure.
[]s
Wilson
----- Original Message -----
From: "Zottis" <bzottis em ig.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Friday, August 06, 2010 7:55 AM
Subject: [firebase-br] RES: Converter segundos em HH:MM:SS
Tenho uma função em Delphi que converte minutos para segundos, acho que da
para fazer uma procedure para isso.
É só adaptar.
Espero que ajude.
function FormatSecsToHMS(Secs: LongInt): string;
var Hrs, Min: Word;
begin
Hrs := Secs div 3600;
Secs := Secs mod 3600;
Min := Secs div 60;
Secs := Secs mod 60;
//Result := Format('%d:%d:%d', [Hrs, Min, Secs]);
Result := Format('%s:%s:%s', [FormatFloat('0',Hrs),
FormatFloat('00',Min), FormatFloat('00',Secs)]);
end;
{ Converter Hora HH:MM:SS em Hora Decimal
- Dividir os segundos por 60 e somar ao minutos
- Dividir o resultado acima por 60 e adicionar às horas
ex: 13:35:42
- 42/60 = 0.7 -> 35.7
- 35.7/60 = 0.595 -> 13.595 que é a hora decimal
Converter a Hora Decimal em HH:MM:SS
- Multiplicar a parte fraccional por 60 -> a parte inteira são os
minutos
- Multiplicar a parte fraccional do resultado anterior por 60 -> a parte
inteira são os segundos
Ex: 13.595
- 0.595*60 = 35.7 -> 35 minutos
- 0.7* 60 = 42 -> 42 segundos
resultado = 13:35:42 }
Function SomaHora2(hora1,hora2:string): string;
var
h1,h2,m1,m2:string;
ttHor,ttMin:integer;
tthor_str,ttmin_str:string;
posi:integer;
begin
if trim(hora1)='' then
exit;
if trim(hora2)='' then
exit;
posi:= Pos(':',hora1);
h1 := copy(hora1,1,posi-1); // hora
m1 := copy(hora1,posi+1,2); // minuto
posi:=Pos(':',hora2);
h2:=copy(hora2,1,posi-1); // hora
m2:=copy(hora2,posi+1,2); // minuto
tthor := strtoint(h1) + strtoint(h2); // soma horas
ttmin := strtoint(m1) + strtoint(m2); // soma minutos
if (ttmin > 60) then // se soma de minutos for > 60...
begin // somamos + 1 hora e subtraimos 60 do total de minutos
tthor := tthor+1;
ttmin := ttmin-60;
end;
if (ttmin = 60) then // se for = a 60...
begin // somamos a hora e zeramos minutos
tthor := tthor+1;
ttmin := 0;
end;
if (ttmin >= 0) and (ttmin <= 9) then
ttmin_str := '0'+inttostr(ttmin)
else
ttmin_str:=inttostr(ttmin);
if (tthor>=0) and (tthor<=9) then
tthor_str:='0'+inttostr(tthor)
else
tthor_str:= inttostr(tthor);
result:= tthor_str+':'+ttmin_str;
end;
Function DiminueHora(hora1,hora2:string): string;
var
Minutos1 ,Minutos2 : integer;
Resultado, h1,h2,m1,m2:string;
ttHor,ttMin:integer;
tthor_str,ttmin_str:string;
posi:integer;
begin
minutos1 := horatomin(hora1);
minutos2 := horatomin(hora2);
result := minutos_para_hora(Minutos1 - minutos2);
end;
Function HoraToMin(Hora: String): Integer;
Var posi:integer;
begin
if trim(hora) = '' then
exit;
posi:= Pos(':',hora);
Result := (StrToInt(copy(hora,1,posi-1))*60) +
StrToInt(copy(hora,posi+1,2));
end;
Function Minutos_para_Hora(Minutos:integer): string;
var aux, hr : integer;
aux_str, hr_str : string;
begin
hr := Trunc(minutos / 60);
//aux := Minutos - (hr * 60);
aux := minutos mod 60;
{ if (aux >= 0 ) and ( aux <= 9 ) then
aux_str := '0' + inttostr(aux)
else
aux_str := inttostr(aux);
if (hr >= 0 ) and ( hr <= 9 ) then
hr_str := '0' + inttostr(hr)
else
hr_str := inttostr(hr);
result:= hr_str+ ':' + aux_str;
//Result := FormatFloat('000',hr)+':'+FormatFloat('00',aux);}
if (aux > 60) then // se soma de minutos for > 60...
begin // somamos + 1 hora e subtraimos 60 do total de minutos
hr := hr + 1;
aux := aux - 60;
end;
if (aux = 60) then // se for = a 60...
begin // somamos a hora e zeramos minutos
hr := hr+1;
aux := 0;
end;
if (aux >= 0) and (aux <= 9) then
aux_str := '0'+inttostr(aux)
else
aux_str:=inttostr(aux);
if (hr>=0) and (hr<=9) then
hr_str:='0'+inttostr(hr)
else
hr_str:= inttostr(hr);
result:= hr_str+':'+aux_str;
end;
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Wilson Mota - GMail
Enviada em: quinta-feira, 5 de agosto de 2010 18:25
Para: Lista FireBase
Assunto: [firebase-br] Converter segundos em HH:MM:SS
Ola pessoal.
Tenho um campo que armazema uma valor em segundos, preciso criar uma
procedure onde passo os segundos e me retorne HH:MM:SS.
Ex: 270.80 segundos -> retorne 04:30:48.
Alguém tem alguma dica de como fazer?
Se souberem como pegar a parte inteira ou fração dos segundos também ajuda,
ai da pra desenvover a procedure.
Obrigado.
Wilson
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista