Necesito crear una función para validar la siguiente situación:
Existe otra posibilidad de que el rango de inicio permitido sea de 23:00 a 04:00. En este caso no se admitirán franjas de 5:00 a 6:00 y de 21:00 a 22:00 horas.
Actualmente mi código valida el día normalmente, pero el día cruzado no.
export default function isOutRangeStringTime({ initialTime, finalTime, allowedInitialTime, allowedFinalTime, }) { if (allowedInitialTime === allowedFinalTime || allowedInitialTime >= allowedFinalTime || initialTime >= finalTime) { return false; } return initialTime < allowedInitialTime || finalTime > allowedFinalTime; }Aquí hay una imagen de la situación en la que mi código no funciona.
También necesito validación para trabajar en días cruzados.
Puede considerar agregar 24 h a allowFinalTime cuando allowFinalTime < allowInitialTime
Considere el uso de objetos de fecha. En aras de la simplicidad, este ejemplo funciona con números:
function isOutRangeStringTime( initialTime, finalTime, allowedInitialTime, allowedFinalTime, ) { if (allowedInitialTime === allowedFinalTime || initialTime === finalTime) { return false; } if( allowedInitialTime > allowedFinalTime ) { allowedFinalTime += 24 initialTime = (initialTime < allowedInitialTime) ? initialTime + 24 : initialTime; finalTime = (finalTime < allowedInitialTime) ? finalTime + 24 : finalTime; } return initialTime > allowedInitialTime && finalTime < allowedFinalTime; }