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
- 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.
- 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
- 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
- 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
- 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
- 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)
- 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