Codigo Fuente

Festivos de Colombia en PHP

Codigo Fuente

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.

Descarge aqui la clase

22 respuestas a «Festivos de Colombia en PHP»

  1. Avatar de academo
    academo

    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

    1. Avatar de Danny Rios Tolosa

      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

    2. Avatar de Kevin Alejandro Castañeda Gomez

      Hola! como puedo usar la clase?. Gracias por tu ayuda

  2. Avatar de Guillermo
    Guillermo

    Como hago para imprimir.. y donde se mete el ano

    1. Avatar de Danny Rios Tolosa

      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

      1. Avatar de newefect

        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

        1. Avatar de newefect

          Si algún día leen mi comentario, por favor lo ignoran y lo desechan. Gracias.

  3. Avatar de Leonardo sapuy

    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

    1. Avatar de Danny Rios Tolosa

      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.

  4. Avatar de Juan David Garcia

    Hola amigo necesito que me des el metodo para Imprimir tu clase. Esta muy bien explicada, quisiera verla funcionando para implementarla en C#.

    1. Avatar de Danny Rios Tolosa

      hola david, es muy facil, pero quisiera preguntarte si sabes PHP, por que o si no me tocaria explicartela lo mas detallada posible

    2. Avatar de DnTo ArAn

      Aca hice una implementacion para C#.
      http://pastebin.com/1XSPeJtr

  5. Avatar de El valluno
    El valluno

    Gracias que buen aporte 🙂

  6. Avatar de cejarcon

    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

    1. Avatar de Danny Rios Tolosa

      Claro que te puedo ayudar, pero que explicación en si necesitas, cual es la duda??

  7. Avatar de César Moreno
    César Moreno

    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.

  8. Avatar de sadalsuud
    sadalsuud

    gracias me ha servido 😀

    1. Avatar de newefect

      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 «

      1. Avatar de jhan20

        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.

        1. Avatar de Diego Ramos
          Diego Ramos

          $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

  9. Avatar de Andres Erazo

    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

  10. Avatar de Diego Ramos
    Diego Ramos

    2021/07/15
    Muchas gracias me funciono correctamente con la modificación que menciona @academo
    Código modificado: http://pastebin.com/WQnp0s0W

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

La moderación de comentarios está activada. Su comentario podría tardar cierto tiempo en aparecer.