Foros del Web » Programando para Internet » PHP »

Calculadora de días festivos Colombia

Estas en el tema de Calculadora de días festivos Colombia en el foro de PHP en Foros del Web. Hola. Les dejo un código que desarrollé en PHP para que me compruebe si una fecha en formato "Y-m-d" es un festivo en Colombia o ...
  #1 (permalink)  
Antiguo 20/09/2012, 21:53
 
Fecha de Ingreso: octubre-2010
Mensajes: 14
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa Calculadora de días festivos Colombia

Hola.

Les dejo un código que desarrollé en PHP para que me compruebe si una fecha en formato "Y-m-d" es un festivo en Colombia o no.

Como la mayoría sabe, los festivos de algunos paises (en especial de latinoamérica) son variables, algunos son fijos y algunos dependen del cálculo de la pascua (Computus). Para ello usé dos funciones, una de estas la saqué de [URL="http://es.wikipedia.org/wiki/Anexo:Implementaciones_del_algoritmo_de_c%C3%A1lcu lo_de_la_fecha_de_Pascua#Algoritmo_en_PHP"]aquí[/URL].

No está muy pulido el código así que recibo sugerencias.

Espero que les sirva.

Código PHP:
<?php
$date_request
=$_REQUEST['date'];
$anio_act date("Y");
$pascua_actual pascua($anio_act);
$arr_fechas = array(
$anio_act."-01-01",
get_next_day($anio_act."-01-06"),
get_next_day($anio_act."-03-19"),
date("Y-m-d"strtotime("$pascua_actual -7 days")),
date("Y-m-d"strtotime("$pascua_actual -3 days")),
date("Y-m-d"strtotime("$pascua_actual -2 days")),
$pascua_actual,
$anio_act."-05-01",
date("Y-m-d"strtotime("$pascua_actual +43 days")),
date("Y-m-d"strtotime("$pascua_actual +64 days")),
date("Y-m-d"strtotime("$pascua_actual +71 days")),
get_next_day($anio_act."-06-29"),
$anio_act."-07-20",
$anio_act."-08-07",
get_next_day($anio_act."-08-15"),
get_next_day($anio_act."-10-12"),
get_next_day($anio_act."-11-01"),
get_next_day($anio_act."-11-11"),
$anio_act."-12-08",
$anio_act."-12-25"
);
if(
$date_request!=null){
    
$dc_dreq date_create($date_request);
    
$tday date_format($dc_dreq,"w");
    if(
$tday==0){
        echo 
"Sunday";
    }elseif(
$tday>&& in_array($date_request,$arr_fechas)){
        echo 
"Holiday";
    }else{
        echo 
date("l"strtotime("$date_request"));
    }
}else{
    
print_r($arr_fechas);
}

function 
get_next_day($datebase){
    
$dc_date date_create($datebase);
    
$nday date_format($dc_date,"w");
    
$nday intval($nday);
    if(
$nday==0){
        return 
date("Y-m-d"strtotime("$datebase +1 days"));
    }elseif(
$nday==1){
        return 
$datebase;
    }elseif(
$nday>1){
        
$add_days 8-$nday;
        return  
date("Y-m-d"strtotime("$datebase +$add_days days"));
    }
}

function 
pascua ($anno){
# Constantes mágicas
    
$M 24;
    
$N 5;
#Cálculo de residuos
    
$a $anno 19;
    
$b $anno 4;
    
$c $anno 7;
    
$d = (19*$a $M) % 30;
    
$e = (2*$b+4*$c+6*$d $N) % 7;
# Decidir entre los 2 casos:
    
if ( $d $e 10 ) {
        
$dia $d $e 22;
        
$mes 3// marzo
        
}
    else {
        
$dia $d $e 9;
        
$mes 4//abril
        
}
# Excepciones especiales (según artículo)
    
if ( $dia == 26  and $mes == ) { // 4 = abril
        
$dia 19;
        }
    if ( 
$dia == 25 and $mes == and $d==28 and $e == and $a >10 ) { // 4 = abril
        
$dia 18;
        }
    
$ret date("Y-m-d",strtotime($anno.'-'.$mes.'-'.$dia));
        return (
$ret);
}
?>

Etiquetas: calculo, colombia, festivos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:58.