Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Existe uma função para transformar uma hora 'completa' (hh:mm:ss) em segundos?vlw...
na verdade eu esequeci de citar que terei q desconverter depois, ai esta a minha dúvida, pois não consegui pensar em uma lógica para isso.
Então, se para converter é só multiplicar e somar, o contrário vai ser só dividir e subtrair. Você não consegue imaginar uma lógica para isso? Pra não estragar a surpresa vou te dar algumas dicas, ok? Quantos minutos tem em uma hora? E quantos segundos tem em um minuto? Pense nestes termos e creio que você vai conseguir chegar a uma conclusão sozinho.
Abraços,
Graymalkin
eu não postaria aqui se não estivesse com uma duvida que realmente eu não consegui resolver. Antes de postar aqui eu tentei bastante resolver isso, e procurei alguma solução na internet.
Acontece que acima de 23 horas 5 minutos e 59 segundos a lógica não funciona mais. Veja:
Private Sub Command1_Click() Dim intHorasEnt, intMinutosEnt, intSegundosEnt As Integer Dim intTempo, intSegundosTotal, intHoras, intMinutos, intSegundos As Integer ' armazena tempo na variável intTempo = mebTempo intHorasEnt = Mid(intTempo, 1, 2) intMinutosEnt = Mid(intTempo, 4, 2) intSegundosEnt = Mid(intTempo, 7, 2) If (intMinutosEnt > 59 Or intSegundosEnt > 59) Then MsgBox "tempo inválido": Exit Sub ' tranforma tempo em segundos intSegundosTotal = (intHorasEnt 360) + (intMinutosEnt 60) + intSegundosEnt ' exibe o resultado da transformação MsgBox "Segundos Total: " & intSegundosTotal ' PROCESSO DE DESTRANSFORMAÇÃO (teste) ' calcula e exibe as horas intHoras = Int(intSegundosTotal / 360) MsgBox "Hora Int: " & intHoras ' calcula e exibe os minutos intMinutos = Int((intSegundosTotal - (intHoras 360)) / 60) MsgBox "Minutos Int: " & intMinutos ' calcula e exibe os segundos intSegundos = intSegundosTotal - (intHoras 360) - (intMinutos * 60) MsgBox "Segundos: " & intSegundosEnd Sub
devo permitir que seja inserido um valor acima de 23 para hora
eu não postaria aqui se não estivesse com uma duvida que realmente eu não consegui resolver. Antes de postar aqui eu tentei bastante resolver isso, e procurei alguma solução na internet.
E eu estou tentando ajudar. Mas acho que você não está lendo o que eu estou escrevendo. Lembra do meu PS lá do meu primeiro post? Eu te perguntei como você conseguiu encontrar 483 segundos para 01h02m03s. Calcule aí comigo: 1 minuto = 60 segundos, 2 minutos = 120 segundos, 3 minutos = 180 segundos, 4 minutos = 240 segundos, 5 minutos = 300 segundos, 6 minutos = 360 segundos, 7 minutos = 420 segundos, 8 minutos = 480 segundos... opa! 480? Sim, 480 segundos são 8 minutos então 483 segundos vão ser 8 minutos e 3 segundos, o que é bem longe de 1 hora, 2 minutos e 3 segundos, não? E se você tivesse lido a dica que eu dei no meu último post você teria percebido isso.
Acontece que acima de 23 horas 5 minutos e 59 segundos a lógica não funciona mais.Sim, porque a conta não está correta. Veja como eu fiz a coisa e funciona para qualquer tempo (dentro dos limites de inteiros que podem ser armazenados, é claro):
tempo = "01:02:03" horas = Left(tempo, 2) minutos = Mid(tempo, 4, 2) segundos = Right(tempo, 2) tsegundos = (horas 60 + minutos) 60 + segundos MsgBox tempo & " = " & tsegundos & " segundos" xminutos = tsegundos \ 60 xhoras = xminutos \ 60 xminutos = xminutos - (xhoras 60) xsegundos = tsegundos - ((xhoras 60 + xminutos) * 60) xtempo = Format(xhoras, "00") & ":" & Format(xminutos, "00") & ":" & Format(xsegundos, "00") MsgBox tsegundos & " segundos = " & xtempoExperimente trocar tempo para...
tempo = "40:59:59"... e você vai ver que funciona do mesmo jeito.
De onde você tirou este 360?
Abraços,
Graymalkin
poxa vida... desculpe-me; realmente não percebi que estava errando...obrigado...
Sem problemas. :)Qualquer dúvida, 'stamos aí.Abraços,Graymalkin
Não, mas é só uma questão de multiplicar e somar.Abraços,GraymalkinPS: Como você conseguiu achar 483 segundos em 01:02:03?