SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Angel38 en Sábado 22 de Julio de 2006, 16:58

Título: Problema Con Suma De Tiempos.
Publicado por: Angel38 en Sábado 22 de Julio de 2006, 16:58
Hola amigos.


Se me presentó un problema el cual nunca lo tuve como opción. :P


Pasa que sumaba las horas, pero como siempre sumaba por minutos, nunca tuve problemas, ahora bien, llegó a 23:59:59 y cuando quize sumar cinco horas más, me aparecieron exactamente, es decir que las 24 horas se perdieron.

Lo que pienso es que cuando llega a 24:00:00 horas, se convierte en 00:00:00 y empieza a sumar de nuevo.

Alguno sabe como darle solucion a ese problema y que me llegue a mostrar 25:00:00 u horas mayores que 24.
Título: Re: Problema Con Suma De Tiempos.
Publicado por: ArKaNtOs en Sábado 22 de Julio de 2006, 18:36
Dim x1 As String, x2 As String, cadena As String, s As Byte, m As Byte, h As Byte
Private Sub Command1_Click()
s = 0: m = 0: h = 0
x1 = "05:10:53"
x2 = "23:22:09"
s = Val(Right(x1, 2)) + Val(Right(x2, 2))
If s >= 60 Then s = s - 60: m = m + 1
m = m + Val(Mid(x1, 4, 2)) + Val(Mid(x2, 4, 2))
If m >= 60 Then m = m - 60: h = h + 1
h = h + Val(Left(x1, 2)) + Val(Left(x2, 2))
cadena = h & ":" & m & ":" & s
MsgBox cadena
End Sub

Espero sea lo q necesites :)  :kicking:
Título: Re: Problema Con Suma De Tiempos.
Publicado por: Angel38 en Lunes 24 de Julio de 2006, 15:06
Gracias Arkantos.  :hola:
Título: Re: Problema Con Suma De Tiempos.
Publicado por: Angel38 en Lunes 24 de Julio de 2006, 15:56
Me gustaria saber si hay una forma de hacerlo con este tipo de formato.


Sumatiempo= Format(TimeValue(Txthora1.text) + TimeValue(Txhora2.text))


Gracias por su ayuda.
Título: Re: Problema Con Suma De Tiempos.
Publicado por: ArKaNtOs en Lunes 24 de Julio de 2006, 20:05
que yo sepa nop :P pero porque no lo que te di haslo en una funcion algo mas o menos asi
Código: Text
  1. Private Sub Command1_Click()
  2. MsgBox sumatime(Time, Time)
  3. End Sub
  4.  
  5. Public Function sumatime(ByVal Hora1 As String, Hora2 As String) As String
  6. Dim s As String, m As String, h As String
  7. s = 0: m = 0: h = 0
  8. Hora1 = Format(Hora1, "HH:MM:SS")
  9. Hora2 = Format(Hora2, "HH:MM:SS")
  10. s = Val(Right(Hora1, 2)) + Val(Right(Hora2, 2))
  11. If s >= 60 Then s = s - 60: m = m + 1
  12. m = m + Val(Mid(Hora1, 4, 2)) + Val(Mid(Hora2, 4, 2))
  13. If m >= 60 Then m = m - 60: h = h + 1
  14. h = h + Val(Left(Hora1, 2)) + Val(Left(Hora2, 2))
  15. s = IIf(Len(s) = 1, 0 & s, s)
  16. m = IIf(Len(m) = 1, 0 & m, m)
  17. h = IIf(Len(h) = 1, 0 & h, h)
  18. sumatime = h & ":" & m & ":" & s
  19. End Function
  20.  
  21.  
Título: Re: Problema Con Suma De Tiempos.
Publicado por: ArKaNtOs en Lunes 24 de Julio de 2006, 20:14
Uso del Format (http://www.apostate.com/programming/vb-format.html)  ;)
Título: Re: Problema Con Suma De Tiempos.
Publicado por: Angel38 en Martes 25 de Julio de 2006, 16:55
Hola Arkantos, viejo te agradezco mucho esa funcion, solo tuve que cambiarle el valor de los times y listo.

Lo malo es que tengo ahora un nuevo problema y espero que no me tomes como esos flojos que no quieren hacer nada y que todo se lo solucionen, el problema es que llevo horas tratando de encontrar la solucion y nada. :( , es decir que no soy flojo sino bruto  :lol:   :lol:   :lol:

Luego de sumar esos tiempos, les debo sacar el promedio. Seria algo asi como:

Hora1= 20:30:00
Hora2= 15:30:00
Hora3= 01:00:00

Sumarlos 37:00:00 y luego dividirlos entre 3.

Con esta intruccion lo hago siempre y cuando no se pasé de las 24 horas.

Código: Text
  1. promedio= format(TimeValue(suma) / 3
  2.  
, pero como sabrás  el tiempo se pasa de 24 horas y no tengo idea de como promediarlo, puesto que las soluciones que hago siempre llevan el format en alguna parte y me arroja error al no reconocer tiempos mayores a un día.

Te agradeceria tu colaboracion y vuelvo a pedirte disculpas por hacerte perder el tiempo :P
Título: Re: Problema Con Suma De Tiempos.
Publicado por: Angel38 en Martes 25 de Julio de 2006, 19:11
Lo solucioné.


Muchas gracias Arkantos, ahi te dejo el codigo para promediarlo por si otra persona tiene el mismo problema.


Código: Text
  1.  
  2. Public Function PromedioTime(ByVal Hora1 As String) As String
  3. Dim s As String, m As String, h As String, dividir As Double
  4. Dim mintemp As Double, Hora As Integer, Minutos As Integer, Segundos As Integer
  5. Dim HoraString As String, MinutoString As String, SegundoString As String
  6.  
  7. s = 0: m = 0: h = 0
  8. s = Val(Right(Hora1, 2))
  9. If s >= 60 Then s = s - 60: m = m + 1
  10.      m = m + Val(Mid(Hora1, 4, 2))
  11. If m >= 60 Then m = m - 60: h = h + 1
  12.      h = h + Val(Left(Hora1, 2))
  13.  
  14.  
  15. MiHoraDouble = (h * 60) + m + (s / 60)
  16. MiHoraDouble = MiHoraDouble / TotalAbsoluto
  17. mintemp = MiHoraDouble / 60
  18. Hora = Int(mintemp)
  19. mintemp = (mintemp - Hora) * 60
  20. Minutos = Int(mintemp)
  21. Segundos = CInt((mintemp - Minutos) * 60)
  22.  
  23. If Hora < 10 Then
  24.    HoraString = "0" + CStr(Hora)
  25. Else
  26.    HoraString = Hora
  27. End If
  28.  
  29. If Minutos < 10 Then
  30.    MinutoString = "0" + CStr(Minutos)
  31. Else
  32.    MinutoString = Minutos
  33. End If
  34.  
  35. If Segundos < 10 Then
  36.    SegundoString = "0" + CStr(Segundos)
  37. Else
  38.    SegundoSting = Segundos
  39. End If
  40.  
  41. Promedio = HoraString + ":" + MinutoString + ":" + SegundoString
  42. End Function
  43.  
  44.  
Título: Re: Problema Con Suma De Tiempos.
Publicado por: ArKaNtOs en Martes 25 de Julio de 2006, 19:53
Interesante :) lo iba a empezar a hacer pero veo que ya obtuviste una solución :)
nos vemos