Como sumar horas y minutos [HH]:mm en visual basic 2010 aunque sobre pasen las 24hrs.

Desde México recuro a ustedes porque ya he buscado en internet sobre como sumar horas y minuto en Visual Basic 2010 pero no he encontrado la solución al problema que tengo.

Estoy utilizando visual basic 2010

En el programa tengo 8 textbox en la cual el usuario debe de ingresar las horas y los minutos de esta forma (HH:mm) y tengo un ultimo textbox en la cual me debería de mostrar el total de las horas también de esta forma (hh:mm). Lo cual no he podido solucionarlo.

También tener encuenta que como voy a sumar 8 textbox las horas pueden llegar hacer mas de 24hrs y que el resultado sea nada mas en horas y minutos ya sea 142:35 [HH]:mm

Por ahora solo he intentado sumar 2 textbox y que se muestre el resultado en un textbox.
Ejemplo que uso:
18:30
08:15
Al Sumar 18:30 + 08:15 me debería de dar "26:45" este es el resultado que quiero que me muestre en el textbox

Les agrego varios opciones que intente pero me resultaban con error o solo me juntaban las dos fechas

OPCIÓN 1
---------------------------------------------------------------------------------------------------------
Código:
txtHora.Text = Convert.ToDateTime(CDate(txtTProduc.Text) + CDate(txtTExtra.Text))
Error que me da el programa:
No se puede reconocer la cadena como valor DateTime válido.

OPCIÓN 2
---------------------------------------------------------------------------------------------------------
Código:
txtHora.Text = TimeValue(CDate(txtTProduc.Text)) + TimeValue(CDate(txtTExtra.Text))
Solución que muestra el textbox:
06:30:00 p.m.08:15:00 a.m.

OPCIÓN 3
---------------------------------------------------------------------------------------------------------
Código:
txtHora.Text = Format(TimeValue(txtTProduc.Text), "HH:mm") + Format(TimeValue(txtTExtra.Text), "HH:mm")
Solución que muestra el textbox:
18:3008:15

OPCIÓN 4
---------------------------------------------------------------------------------------------------------
Código:
txtHora.Text = CDate(Format(TimeValue(Format(txtTProduc.Text))) + CDate(TimeValue(Format(txtTExtra.Text))))
Error que me da el programa:
La conversión de la cadena "06:30:00 p.m.08:15:00 a.m." en el tipo 'Date' no es válida.

OPCIÓN 5
---------------------------------------------------------------------------------------------------------
Código:
txtHora.Text = FormatDateTime(TimeValue(Format(txtTProduc.Text, "[HH]:mm")) + TimeValue(Format(txtTExtra.Text, "[HH]:mm")), "[HH]:mm")
Error que me da el programa:
La conversión de la cadena "[HH]:mm" en el tipo 'Date' no es válida.
-----------------------------------------------------------------------------------------------------------

Como voy a tener 8 textbox al sumar se sobrepasara las 24hrs el resultado puede salir 142:¿20 y como visual basic 2010 creo que detecta si esta en el rango de 24hrs no?

En una respuesta que cheque anteriormente mencionaron que se convierte en días horas y minutos pero yo lo necesito en horas y minutos [HH]:mm

Espero que me haya explicado que es lo que necesito.

Si tienen alguna opción mejor que pueda sumar las horas y minutos(HH:mm)

1 respuesta

Respuesta
3

Me parece que la mejor solución es sumar todo por separado(horas con horas y minutos con minutos), luego hacer los ajustes por excedentes de minutos y horas, y luego generar el formato deseado.

Deme un momento y le genero la solución.

Listo, tengo una posible solución. Estoy seguro de que no es como lo querías pero te puede ayudar.

El problema es que el formato Fecha/Hora solo soporta hasta 24 horas, después de eso reinicia a 0 y asume que es un nuevo día. Para lo que deseas debes hacerlo por separado.

Private Sub btnSumar_Click(sender As Object, e As EventArgs) Handles btnSumar.Click

Dim hora1 As Single
Dim minuto1 As Single
Dim hora2 As Single
Dim minuto2 As Single
Dim horasuma As Single
Dim minutosuma As Single

'Esto lo puedes modificar dependiendo de la cantidad de TextBox
hora1 = TimeValue(txtHora1.Text).Hour 'Tomamos la Hora del primer TextBox
hora2 = TimeValue(txtHora2.Text).Hour 'Tomamos la Hora del segundo TextBox
minuto1 = TimeValue(txtHora1.Text).Minute 'Tomamos los minutos del primer TextBox
minuto2 = TimeValue(txtHora2.Text). Minute 'Tomamos los minutos del segundo TextBox

minutosuma = minuto1 + minuto2 'Sumamos los minutos
horasuma = hora1 + hora2 'Sumamos las horas

'Desde aquí se mantiene igual

horasuma = horasuma + Math.Floor(minutosuma / 60) 'Ajustamos las horas por excedente de 60 minutos por hora
minutosuma = ((minutosuma / 60) - Math.Floor(minutosuma / 60)) * 60 'Ajustamos los minutos en base a 60 minutos por hora
txtHoraSuma.Text = horasuma & ":" & minutosuma 'Asignamos al tercer TextBox
End Sub

Esta hecho para 2TextBox pero es fácilmente adaptable a 8.

HOla muchísimas gracias por la ayuda me sirvió muchísimo si respondió a mi duda.

Ahora aprovechando tengo otra que no se si se pueda hacer.

Tenemos la hora en un textbox (27:15) se puede separar las horas y los minutos y ponerlos en un textbox diferente?

Para separar puedes intentar esto

TextBox1.Text = Mid(txtbox.Text, 1, InStr(1, txtbox.Text, ":") - 1)
TextBox2.Text = Mid(txtbox.Text, InStr(1, txtbox.Text, ":") + 1)

Muchísimas Gracias Experto me funciono de maravilla \('-')/

Pensé que primero agradecía y luego finalizaba pregunta

Muchísimas Gracias Experto me funciono de maravilla \('-')/

Alguna duda mas estaré molestándote otra ves XD

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas