Calculo horas laborales en una operación

  • Iniciador del tema Anonymous
  • Fecha de inicio
A

Anonymous

Guest
Hola foreros,

Estoy creando un informe en el que se indica el número de horas laborales que dura una tarea desde que comienza hasta que termina. Tengo un campo fecha/hora que indica el comienzo y otro campo fecha/hora que indica el final.

Si el horario laboral es de 08.30 a 13.00 y de 14.00 a 17.30, ¿Cómo puedo calcular las horas que dura la tarea?

Gracias,

Jordi
 
A

Anonymous

Guest
Hola,

Se me ocurre que podrias hallar la diferencia entre fechas para obtener los dias y luego multiplicar por 8 que son tus horas laborales.

Espero que esto te ayude

Saludos
 
A

Anonymous

Guest
Gracias Liliana,

De hecho lo que realmente se me pide es el número exacto de horas, aunque no estoy seguro de cómo hacerlo. De momento estoy aplicando el truco que me recomiendas aunque me estan pidiendo que lo hago más exacto.

¿Qué se te ocurre?

Saludos,

Jordi
 
Hola Jordi,

Lo que pides no es sencillo, a ver si lo siguiente puede ayudarte:
COMIENZO= fecha y hora de comienzo de la tarea
FINAL = fecha y hora de terminación de la tarea

  1. Crea una variable (Dias enteros) en la que calcula el número de días entre el comienzo y el final del proyecto y encima le restas un día.
    DIAS ENTEROS= daysbetween*(FINAL, COMIENZO) - 1.
    * No estoy seguro como se dice en castellano.
  2. Crea otra variable que indica el tiempo entre el final de la jornada y la hora de comienzo del proyecto. Tendrás que convertir todo a segundos y luego dividir entre 3,600 para pasarlo a horas
    HORAS PRIMER DIA = 17:30:00 – HORA COMIENZO = (segundos + minutos * 60 + horas * 3600) / 3600
  3. Crea otra variable que recoja el tiempo entre el final de la tarea y el comienzo de la ultima jornada. De nuevo tendrás que convertirlo en horas.
    HORAS ULTIMO DIA= HORA FINAL – 08:30:00 = (segundos + minutos * 60 + horas * 3600) / 3600
  4. Crea un flag que indique si el proyecto ha comenzado antes del almuerzo (1) o después (1)
    ALMUERZO COMIENZO = Si HORA COMIENZO > 14:00:00 entonces 0 si no 1
  5. Crea un flag que indique si el proyecto ha finalizado antes del almuerzo (0) o después (0)
    ALMUERZO FINAL = Si HORA FINAL > 14:00:00 entonces 1 si no 0
  6. Despues tenemos que calcular cuantos fines de semana hay por medio. Creas una variable para ello y lo calculas restando la semana final a la inicial
    FINES SEMANAS = week (FINAL) – week (COMIENZO)
  7. Y para finalizar aplicas la siguiente formula mágica
    DURACIÓN PROYECTO = (DIAS ENTEROS - FINES DE SEMANA * 2)* 8 + HORAS PRIMER DIA + HORAS ULTIMO DIA – ALMUERZO COMIENZO – ALMUERZO FINAL

Por supuesto hay muchas premisas aquí (proyectos no pueden empezar a la hora del almuerzo, hay ocho horas al dia, no se trabaja los fines de semana, no existen los festivos) pero creo que puede darte una idea bastante exacta de lo que buscas.

Saludos,

José Antonio
 
Arriba