Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pedro rodrigues

transofrmar hora completa em segundos

Recommended Posts

Não, mas é só uma questão de multiplicar e somar.Abraços,GraymalkinPS: Como você conseguiu achar 483 segundos em 01:02:03?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 = " & xtempo
Experimente 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.