Festivos de Colombia en PHP
Con la siguiente clase se genera un array con los calculos necesarios para calcular los festivos de colombia de acuerdo a la normativa actual del paÃs.
Los festivos se dividen en 4 tipos de festivos
- Festivos fijos (son aquellos que no se mueven de la fecha sin importar que dÃa de la semana son)
- Festivos Emiliani (estos son los festivos que son corridos al lunes siguiente a ocurrir el verdadero dÃa feriado, esto debido a la legislación colombiana)
- Festivos calculados por el dia de pascuas
- Festivos calculados por el dia de pascuas y corridos al lunes siguiente por la ley Emiliani
La clase creada tiene un constructor al cual se le pasa el numero del año del cual se quiere saber las fechas festivas, las cuales se almacenan en un array de tres dimensiones donde la primer dimencion es el año, la segunda dimencion es el mes y la tercera dimencion es el dia.
para calcular el dia de pascua se utiliza una funcion nativa de PHP llamada easter_date al cual se le pasa por argumento el año al cual dicha fecha.
Adicional a esto tambien la clase tiene una funcion a la cual se le pasa por parametro un dia y un mes del año calculado, y esta nos dira si ese dia es festivo.
Esta clase esta siendo usada en un proyecto que actualmente desarrolla iguazoft para un cliente muy especial.
Espero la clase les sea de utilidad.
Danny muchas gracias por el aporte, me ha sido muy útil, tienes algunos errores en el calculo de los festivos tipo pascua, ya que has puesto la cantidad de dÃas a sumar incorrectos.
Le hice una modificación para tener un solo método que devuelta todos los festivos y estoy pensando en convertir los métodos en estáticos para no tener que instanciar la clase ya que solo se usa una vez.
Código modificado: http://pastebin.com/WQnp0s0W
Bueno, gracias por el comentario, si habia observado que tenia errores pero por falta de tiempo no habia podido solucionarlo, pero gracias por la mejora, la tendre encuenta para mejorarla
Hola! como puedo usar la clase?. Gracias por tu ayuda
Como hago para imprimir.. y donde se mete el ano
para poder usar la clase se instancia la clase de festivos y se le envia por parametro el año que se desea, si no le envia un año en especifico, si no se asigna un año la clase toma por defecto el año en curso
ejemplo
require('festivos.php');
$dias_festivos = new festivos('2013');
luego que esta instanciada la clase puede usar un metodo de la case parapreguntarle si una fecha en especial de ese año es festivo por medio del metodo esFestivo
en el momento la clase no cuenta con un metodo para imprimir los dias festivos pero debido a tu pregunta voy a implementarle uno y lo subo hoy
gracias
No se si aún pueda obtener respuesta, pero la peor tarea es la que no se hace…
¿Cómo le pregunto si una fecha es festiva?
Por ejemplo: necesito validar todos los dÃas del mes de enero de 2019
Si algún dÃa leen mi comentario, por favor lo ignoran y lo desechan. Gracias.
Hey amigo, excelente recurso, muchas gracias, me ha sido de gran ayuda para un aplicativo que estoy desarrollando en este momento sobre planeación de visitas domiciliarias. De igual manera punto para academo por la corrección acerca del cálculo de los festivos pascua. Saludos
gracias por contarnos que nuestro aporte a sido de gran ayuda, lastimosamente hemos estado muy ocupados para crear mas aportes para la comunidad. Esperamos prontamente desocuparnos un poco para poder crear mas cosas para la comunidad.
Hola amigo necesito que me des el metodo para Imprimir tu clase. Esta muy bien explicada, quisiera verla funcionando para implementarla en C#.
hola david, es muy facil, pero quisiera preguntarte si sabes PHP, por que o si no me tocaria explicartela lo mas detallada posible
Aca hice una implementacion para C#.
http://pastebin.com/1XSPeJtr
Gracias que buen aporte 🙂
Se que el post es algo viejo, sin embargo, me urge utilizarlo ahora, podrias darme una explicación de cómo funciona la clase, comoo la puedo utilizar.
Gracias
Claro que te puedo ayudar, pero que explicación en si necesitas, cual es la duda??
Hola, implementé tu lógica en SQL Server con una serie de funciones. Muy bueno tu post. Al calcular el dÃa de la ascención, debi cambiar el valor de 36 a 43, para que hiciera bien el cálculo.
gracias me ha servido 😀
Hola, me puedes compartir por favor, como te funcionó?
Por ejemplo, si recibo por POST el $mes (marzo) y el $año (2018), como puedo calcular los 3 dÃas festivos y que muestre «Los dÃas de marzo de 2018, exceptuando festivos, es 28 «
Hola, super bueno… No se si aun funcione debido a que esto fue hace mucho tiempo.
Pero me gustaria saber como llamo a la funcion “public function esFestivo($dia,$mes)â€
Les agradezo.
$dias_festivos = new Festivos(); // opcional se le puede pasar el año a consultar ejemplo: new Festivos(‘2018’), si no se le pasa un año toma el año actual
$dias_festivos->getFestivos(); // Si se imprime esto muestra todos los festivos del año que se ingreso
$dia =20; $mes = 7;
$dias_festivos->esFestivo($dia,$mes); // devuelve verdadero o falso si la fecha pasada corresponde a un dÃa festivo o no
se agradece mucho este trabajo, me ayudó bastante aunque toco modificarlo un poco para que funcionara en mi versión de php, de todas formas mil gracias por compartir este conocimiento
2021/07/15
Muchas gracias me funciono correctamente con la modificación que menciona @academo
Código modificado: http://pastebin.com/WQnp0s0W