Calcular día de la semana con PHP
Los requisitos de los clientes, en buena medida suelen tener que ver con restricciones temporales. No sólo de cantidad de tiempo, sino también de qué días o no es. Por eso hoy os traigo este código. Veremos primero cómo averiguar qué día de la semana es para una fecha dada, para posteriormente hacer una función de ejemplo que diga si es fin de semana o no.
Empecemos, recibiremos una fecha en formato americano, como se almacena en las bases de datos como MySQL es decir: año con cuatro cifras, seguido del mes en formato número con dos cifras, seguido del día con dos cifras, todo ello separado por guiones.
Usaremos dos funciones de PHP:
- int cal_to_jd ( int $calendario , int $mes , int $día , int $año ): calcula la fecha juliana para una fecha en el calendario calendar especificado. Se soportan: el gregoriano (CAL_GREGORIAN), el juliano (CAL_JULIAN), el judío (CAL_JEWISH) y el francés (CAL_FRENCH).
- mixed jddayofweek ( int $díajuliano [, int $modo = CAL_DOW_DAYNO ] ): una vez se obtiene la fecha juliana, calcula el día de la semana. Hay varios modos pero usaremos el 0, por defecto, que devuelve el día como un entero de 0 a 6, siendo 0 domingo y 6 sábado.
Ya que sabemos qué día de la semana es, podemos saber si es fin de semana, comentad sobre este código, seguro que entre todos podemos buscar muchas funcionalidades y mejoras:
function esFinDeSemana($fecha) { $fechaL = explode("-",$fecha); switch(jddayofweek(cal_to_jd(CAL_GREGORIAN, date($fechaL[1]),date($fechaL[2]), date($fechaL[0])), 0)) { case 0: case 6: return true; break; default: return false; break; }