From f402753fa31338c5af555748fdd9163f2aba598d Mon Sep 17 00:00:00 2001 From: Thomas OURSEL Date: Mon, 23 Apr 2018 15:14:34 +0200 Subject: [PATCH] Fix french holidays (Easter related) --- htdocs/core/lib/date.lib.php | 46 +++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 931f30ce998..8a52941091e 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -562,56 +562,70 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') { $countryfound=1; - // Definition des dates feriees fixes + // Définition des dates fériées fixes if($jour == 1 && $mois == 1) $ferie=true; // 1er janvier if($jour == 1 && $mois == 5) $ferie=true; // 1er mai if($jour == 8 && $mois == 5) $ferie=true; // 5 mai if($jour == 14 && $mois == 7) $ferie=true; // 14 juillet - if($jour == 15 && $mois == 8) $ferie=true; // 15 aout + if($jour == 15 && $mois == 8) $ferie=true; // 15 août if($jour == 1 && $mois == 11) $ferie=true; // 1 novembre if($jour == 11 && $mois == 11) $ferie=true; // 11 novembre if($jour == 25 && $mois == 12) $ferie=true; // 25 decembre - // Calcul du jour de paques + // Calcul du jour de Pâques $date_paques = easter_date($annee); $jour_paques = date("d", $date_paques); $mois_paques = date("m", $date_paques); if($jour_paques == $jour && $mois_paques == $mois) $ferie=true; - // Paques + // Pâques - // Calcul du jour de l ascension (38 jours apres Paques) + // Calcul du jour du lundi de Pâques + $date_lundi_paques = mktime( + date("H", $date_paques), + date("i", $date_paques), + date("s", $date_paques), + date("m", $date_paques), + date("d", $date_paques) + 1, + date("Y", $date_paques) + ); + $jour_lundi_ascension = date("d", $date_lundi_paques); + $mois_lundi_ascension = date("m", $date_lundi_paques); + if($jour_lundi_ascension == $jour && $mois_lundi_ascension == $mois) $ferie=true; + // Lundi de Pâques + + // Calcul du jour de l'ascension (38 jours apres Pâques) $date_ascension = mktime( date("H", $date_paques), date("i", $date_paques), date("s", $date_paques), date("m", $date_paques), - date("d", $date_paques) + 38, + date("d", $date_paques) + 39, date("Y", $date_paques) ); $jour_ascension = date("d", $date_ascension); $mois_ascension = date("m", $date_ascension); if($jour_ascension == $jour && $mois_ascension == $mois) $ferie=true; - //Ascension + // Ascension - // Calcul de Pentecote (11 jours apres Paques) + // Calcul de Pentecôte (11 jours apres Pâques) $date_pentecote = mktime( - date("H", $date_ascension), - date("i", $date_ascension), - date("s", $date_ascension), - date("m", $date_ascension), - date("d", $date_ascension) + 11, - date("Y", $date_ascension) + date("H", $date_paques), + date("i", $date_paques), + date("s", $date_paques), + date("m", $date_paques), + date("d", $date_paques) + 49, + date("Y", $date_paques) ); $jour_pentecote = date("d", $date_pentecote); $mois_pentecote = date("m", $date_pentecote); if($jour_pentecote == $jour && $mois_pentecote == $mois) $ferie=true; - //Pentecote + // Pentecôte // Calul des samedis et dimanches $jour_julien = unixtojd($timestampStart); $jour_semaine = jddayofweek($jour_julien, 0); if($jour_semaine == 0 || $jour_semaine == 6) $ferie=true; - //Samedi (6) et dimanche (0) + // Samedi (6) et dimanche (0) } // Pentecoste and Ascensione in Italy go to the sunday after: isn't holiday.