1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| function date_jourFerie($mois, $an){
// pour avoir tous les jours feries de l'annee,
// passez un tableau de mois (ferie(range(1, 12), $an);
// pour les avoir sur plusieurs annees
// ferie(range(1, 24), $an); ferie(range(36, 12), $an);
if (is_array($an)){
$retour = array();
foreach ($an as $annee) {
if (is_array($mois)){
foreach ($mois as $m) {
$retour[$annee][$m] = opl_date_jourFerie($m, $annee);
}
}
}
return $retour;
}
// calcul des jours feries pour un seul mois.
if (mktime(0, 0, 0, $mois, 1, $an) == -1) {
return FALSE;
}
list($mois, $an) = explode("-", date("m-Y", mktime(0, 0, 0, $mois, 1, $an)));
$an = intval($an);
$mois = intval($mois);
// une constante
$jour = 3600*24;
// calcul paques
$G = $an % 19;
$C = (int)($an / 100);
$H = (int)($C - ($C / 4) - ((8*$C+13) / 25) + 19*$G + 15) % 30;
$I = (int)$H - (int)($H / 28)*(1 - (int)($H / 28)*(int)(29 / ($H +1))*((int)(21 - $G) / 11));
$J = ($an + (int)($an/4) + $I + 2 - $C + (int)($C/4)) % 7;
$L = $I - $J;
$m = 3 + (int)(($L + 40) / 44);
$d = $L + 28 - 31 * ((int)($m / 4));
$paques = mktime(0, 0, 0, $m, $d, $an);
// quelques fetes mobiles
$lundi_de_paques['mois'] = date( "n", $paques+1*$jour);
$lundi_de_paques['jour'] = date( "j", $paques+1*$jour);
$lundi_de_paques['nom'] = "Lundi de Pâques";
$ascencion['mois'] = date( "n", $paques+39*$jour);
$ascencion['jour'] = date( "j", $paques+39*$jour);
$ascencion['nom'] = "Jeudi de l'ascenscion";
$vendredi_saint['mois'] = date( "n", $paques-2*$jour);
$vendredi_saint['jour'] = date( "j", $paques-2*$jour);
$vendredi_saint['nom'] = "Vendredi Saint";
$lundi_de_pentecote['mois'] = date( "n", $paques+50*$jour);
$lundi_de_pentecote['jour'] = date( "j", $paques+50*$jour);
$lundi_de_pentecote['nom'] = "Lundi de Pentecôte";
// France
$ferie["Jour de l'an"][1] = 1;
$ferie["Armistice 39-45 "][5] = 8;
$ferie["Toussaint"][11] = 1;
$ferie["Armistice 14-18"][11] = 11;
$ferie["Assomption"][8] =15;
$ferie["Fête du travail "][5] =1;
$ferie["Fête nationale"][7] =14;
$ferie["Noël"][12] = 25;
$ferie["Lendemain de Noël (Alsace seulement)"][12] = 25;
$ferie[$lundi_de_paques['nom']][$lundi_de_paques['mois']] =
$lundi_de_paques['jour'];
$ferie[$lundi_de_pentecote['nom']][$lundi_de_pentecote['mois']] =
$lundi_de_pentecote['jour'];
$ferie[$ascencion['nom']][$ascencion['mois']] = $ascencion['jour'];
$ferie[$vendredi_saint['nom']." (Alsace)"][$vendredi_saint['mois']]=
$vendredi_saint['jour'];
// reponse
$reponse = array();
while(list($nom, $date)= each($ferie)){
if (isset($date[$mois])){
// une fete a date calculable
$reponse[$date[$mois]]=$nom;
}
}
ksort($reponse);
return $reponse;
} |
Partager