Horas en VB.net

Necesito que me ayudes en lo siguiente. En un formulario tengo 4 textbox en los cuales se ingresaran la hora de entrada a trabajar, la hora de salida a colación, la hora de entrada de colación y la hora de salida del trabajo, de un trabajador. Ademas existe un label en el cual se deberá mostrar la cantidad de horas que trabajo en el día. (Descontado las horas de colación)
¿Cómo puedo hacer esto?
Lo ideal debe ser que el label vaya cambiando a medida que se ingresan las horas.

2 Respuestas

Respuesta
1
Este seria el código para hacer eso, el formato de horas es el de 24Hrs. Un tipo de variable TimeSpan te permite conocer a detalle la información de la hora ya que tiene varias propiedades para el manejo de horas.
Public horas_sin_colacion As TimeSpan
Public resultado_colacion As TimeSpan
Private Sub calcular_hora()
If TextBox2.Text <> "" And TextBox1.Text <> "" And TextBox3.Text <> "" And TextBox4.Text <> "" Then
Try
horas_sin_colacion = Convert.ToDateTime(TextBox4.Text) - Convert.ToDateTime(TextBox1.Text)
resultado_colacion = Convert.ToDateTime(TextBox3.Text) - Convert.ToDateTime(TextBox2.Text)
Label1.Text = horas_sin_colacion.Hours - resultado_colacion.Hours
Catch ex As Exception
End Try
End If
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
calcular_hora()
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
calcular_hora()
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
calcular_hora()
End Sub
Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged
calcular_hora()
End Sub
Muchas gracias por tu pronta respuesta. Me sirvió bastante.
Ejemplo si el trabajador entra a las 8:00 sale a colación a las 13:00 vuelve de colación a las14:00 y se retira a las 18:00 el label me mostrara como resultado 9 hora de trabajo. Hasta hay estamos bien pero que pasa si el trabajador entra a las 8:00 y se retira a colación a las 14:¿00 y de hay no trabaja más?
Como esta el ejemplo no te hará las operaciones ya que solo hasta que están llenos todos los text realiza las operaciones, tendrías que poner como hora de salida 14:00 y hora de entrada a colación 14:00 para que te de como resultado 6 horas. O podrías agregar en:
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
If TextBox3.Text == "" Then
   TextBox3.Text = TextBox2.Text
End If
If TextBox4.Text == "" Then
   TextBox4.Text = TextBox2.Text
End If
Lo otro que se n¡Me quedaba en el tintero; la hora yo la ingreso de esta forma HH:MM el resultado se puede mostrar de la misma manera (HH:MM).
Y que pasaría si el trabajador entra a las 08:00 se va a colación a las 13:00 y vuelve a las 14:30 y se retira a las 18:00 el label me sigue mostrando 9 y debería mostrar 8:30
Gracias de antemano.
Lo hice de rapido porque estoy trabajando pero creo que así quedaría, sino nada más juega entre als operaciones:
Public horas_sin_colacion As TimeSpan
Public resultado_colacion As TimeSpan
Public horas As Integer
Public minutos_colacion As Double
Public minutos_sin_colacion As Double
Private Sub calcular_hora()
If TextBox2.Text <> "" And TextBox1.Text <> "" And TextBox3.Text <> "" And TextBox4.Text <> "" Then
Try
horas_sin_colacion = Convert.ToDateTime(TextBox4.Text) - Convert.ToDateTime(TextBox1.Text)
resultado_colacion = Convert.ToDateTime(TextBox3.Text) - Convert.ToDateTime(TextBox2.Text)
minutos_colacion = resultado_colacion.Minutes - horas_sin_colacion.Minutes
If minutos_colacion < 0 Then
minutos_colacion = minutos_colacion * -1
End If
horas = horas_sin_colacion.TotalHours - resultado_colacion.TotalHours
Label1.Text = horas
Label1.Text = Label1.Text & ":" & minutos_colacion.ToString()
Catch ex As Exception
End Try
End If
End Sub
Respuesta
La función DateDiff que se encuentra en la clase DateTime la puedes utilizar para realizar el calculo de la diferencia de las horas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas