Horas Nocturnas como calcular en un formulario

Como en un cuadro de texto me puede calcular horas nocturnas desde las 21:00hs a 06:00 hs

3 Respuestas

Respuesta
1

Estoy de acuerdo no hay claridad en la asignación u hora en la cual inicia las nocturna, le complemento solo para tomar el tiempo desde una hora inicial y hora final. La diferencia del ejemplo es que utilizo 2 métodos, uno con formato hora hh:mm y el otro con formato decimal.

El formato "decimal" tiene más código porque se deben separa horas de minutos para hacer la conversión en la suma total, pero tiene la ventaja que es mejor para hacer cálculos con base en el resultado. No explico el código porque es mucho para hacerlo por acá. Si quiere el ejemplo lo puede solicitar a [email protected].

NOTA: Trate de no utilizar algo como #9:00: PM# para manipular horas, en lo posible utilice la hora militar.

Corrijo #9:00:00 PM#

Respuesta

En principio tienes un problema, ya que a partir de las 12 de la noche el sistema considera las horas, del día siguiente, por lo que convendría saber como "delimitas" la jornada laboral.

Además se pueden dar los casos

1º La hora de entrada y salida son antes de las 21:00

2º La hora de entrada es antes de las 21:00 y la de salida antes de las 24:00

3º La hora de entrada es antes de las 21:00 y la de salida antes de las 06:00

4º La hora de entrada es después de las 21:00

Y ya, puestos a eso, también podría entrar a las 22:00 y salir a las 09:00 del día siguiente. Por tanto, ¿Dónde están los límites de la jornada laboral?

Mira el formulario

Contempla los 3 primeros casos

Private Sub HoraSalida_AfterUpdate()
If HoraEntrada < #9:00:00 PM# And HoraSalida < #9:00:00 PM# And HoraSalida > HoraEntrada Then
HorasDiurnas = HoraSalida - HoraEntrada
ElseIf HoraEntrada < #9:00:00 PM# And HoraSalida > #9:00:00 PM# And HoraSalida < 1 Then
HorasDiurnas = #9:00:00 PM# - HoraEntrada
HorasNocturnas = HoraSalida - #9:00:00 PM#
ElseIf HoraEntrada < #9:00:00 PM# And HoraSalida < HoraEntrada And HoraSalida < #6:00:00 AM# Then
HorasDiurnas = #9:00:00 PM# - HoraEntrada
HorasNocturnas = 1 - #9:00:00 PM# + HoraSalida
End If
End Sub
Respuesta

Las transiciones entre dos días se solucionan añadiendo a la hora de salida una unidad (un día) si esta hora (la de salida) es inferior a la de entrada.

La fórmula:

Horas_trabajadas = ([Hora de salida] -([Hora de salida]< [hora de entrada]) ) - [Hora de entrada]

A:) Entrada a las 21:15 y salida a las 23:30 (horas nocturnas en el mismo dia):

Hora_de_salida= #23:30#
Hora_de_entrada= #21:15#
?Format((hora_de_salida - (hora_de_salida < hora_de_entrada))- Hora_de_entrada,"hh:nn")
02:15

B:) Entrada a las 2:15 y salida a las 6:00 (horas nocturnas en el mismo dia):
Hora_de_salida= #6:00#

Hora_de_entrada= #2:15#

?Format((hora_de_salida - (hora_de_salida < hora_de_entrada))- Hora_de_entrada,"hh:nn")
03:45

El caso de entrar a las 21:15 y salir a las 4:15 (horas nocturnas entre dos dias):
Hora_de_salida= #4:15#

Hora_de_entrada= #21:15#

?Format((hora_de_salida - (hora_de_salida < hora_de_entrada))- Hora_de_entrada,"hh:nn")
07:00

Queda en el tintero el caso de que una jornada tenga parte en horas nocturnas y parte en horas diurnas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas