Tengo un formulario para solicitar una licencia, donde tienes la opción de mencionar la fecha y hora de start date and time de end date and time de la licencia aplicada. Necesito encontrar la duración total en horas y minutos que ya he implementado. Pero hay 2 factores que deben considerarse aquí.
La licencia solicitada debe residir dentro del horario laboral de la empresa. Ejemplo, si el usuario solicita la licencia del 3rd Feb 2022 08:00 AM a. m. al 3rd Feb 09:00 PM . m., y si el horario laboral de la empresa es 09:00 AM to 06:00 PM 3rd Feb 2022 09:00 AM to 3rd Feb 06:00 PM . 3rd Feb 2022 09:00 AM to 3rd Feb 06:00 PM
Puede haber varios descansos entre un día, digamos un descanso para almorzar de 01:00 PM to 02:00 PM , también un descanso de 04:00 PM to 04:30PM . Por lo tanto, esta duración también debe deducirse de la licencia aplicada si los descansos se encuentran entre el rango de la licencia aplicada.
Sé que esto podría hacerse recorriendo cada rango de tiempo y verificando si reside entre los descansos. Pero me pregunto si hay una forma mejor/más elegante de abordar esta situación. Cualquier ayuda sería apreciada.
En lugar de pensar en los descansos de un día, considérelo como bloques de horas de trabajo. Por ejemplo, Feb 3rd, 9am to 1pm , Feb 3rd, 2pm to 4pm , Feb 3rd, 4pm to 6pm , Feb 4th, 8am to 11am . Almacene sus datos en este formulario y no necesita calcular descansos, pero es posible que deba tomar 2 bloques de trabajo parciales desde el principio y el final de la licencia.
Por lo tanto, tendría algún tipo de objeto con todas las horas de trabajo en orden cronológico, probablemente indexado por año y día, y cada día tendría una serie de bloques de trabajo. Encuentra dónde aterrizan la hora de inicio y la hora de finalización en las matrices de los días correspondientes, y posiblemente calcule bloques de trabajo parciales. Luego sumas todos los bloques de trabajo intermedios.