Trouver les jours fériés français en PHP

Calculer le nombre de jours ouvrés entre deux dates.

Toutes les entreprises françaises ont eu un jour besoin de calculer le nombre de jours ouvrés entre deux dates. Certains sont très faciles à calculer, d'autres dépendent du jour de pâques et changent donc tous les ans. Dans ce tutoriel nous irons par étapes : nous apprendrons à trouver le jour de Pâques, nous ferons une liste des jours fériés français et pour finir nous calculerons le nombre de jours ouvrés entre deux dates.

Trouver le jour de pâques en programmation

En PHP la solution à ce problème est très simple, la fonction easter_date fait tout le travail pour nous.

La fonction easter_date

echo date("d/m/Y", easter_date(2012)); /* Sortie : 08/04/2012 */

Toutefois, comme je suis gentil, je vais vous donner une fonction détaillée que vous pourrez adapter à n'importe quel langage. Cette fonction est tirée d'un algorithme de Oudin. Par définition pâques représente : le premier dimanche qui suit la première pleine lune qui suit le (ou est égal au) premier jour du printemps (21 mars). Minute culturelle : pâques symbolise la résurrection de Jésus.

Algorithme pour calculer pâques

$year = 2012; $a = $year % 4; $b = $year % 7; $c = $year % 19; $m = 24; $n = 5; $d = (19 * $c + $m ) % 30; $e = (2 * $a + 4 * $b + 6 * $d + $n) % 7; $easterdate = 22 + $d + $e; if ($easterdate > 31) { $day = $d + $e - 9; $month = 4; } else { $day = 22 + $d + $e; $month = 3; } if ($d == 29 && $e == 6) { $day = 10; $month = 04; } elseif ($d == 28 && $e == 6) { $day = 18; $month = 04; } echo $day.'/'.$month.'/'.$year; /* Sortie : 8/4/2012 */ /* Pour obtenir un timestamp. */ echo mktime(0, 0, 0, $month, $day, $year); /* Sortie : 1333836000 */

Liste des jours fériés français

  • Jour de l'an : 1er janvier
  • Fête du travail : 1er mai
  • Victoire des alliés 1945 : 8 mai
  • Fête nationale, anniversaire de la fête de la fédération : 14 juillet
  • Assomption, fin de la vie terrestre de Marie : 15 août
  • Toussaint, fête de tous les saints : 1er novembre
  • Armistice de 1918 : 11 novembre
  • Noël : 25 décembre
  • Lundi de pâques : dimanche de pâques + 1
  • Ascension, élévation de Jésus : dimanche de pâques + 39
  • Pentecôte, venue du Saint Esprit : dimanche de pâques + 50

Liste des jours fériés français en PHP

public static function getHolidays($year = null) { if ($year === null) { $year = intval(strftime('%Y')); } $easterDate = easter_date($year); $easterDay = date('j', $easterDate); $easterMonth = date('n', $easterDate); $easterYear = date('Y', $easterDate); $holidays = array( // Jours feries fixes mktime(0, 0, 0, 1, 1, $year),// 1er janvier mktime(0, 0, 0, 5, 1, $year),// Fete du travail mktime(0, 0, 0, 5, 8, $year),// Victoire des allies mktime(0, 0, 0, 7, 14, $year),// Fete nationale mktime(0, 0, 0, 8, 15, $year),// Assomption mktime(0, 0, 0, 11, 1, $year),// Toussaint mktime(0, 0, 0, 11, 11, $year),// Armistice mktime(0, 0, 0, 12, 25, $year),// Noel // Jour feries qui dependent de paques mktime(0, 0, 0, $easterMonth, $easterDay + 1, $easterYear),// Lundi de paques mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear),// Ascension mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear), // Pentecote ); sort($holidays); return $holidays; } print_r (Tuto2DevDate::getHolidays(2012)); /* Sortie : Array ( [0] => 1325372400 [1] => 1333922400 [2] => 1335823200 [3] => 1336428000 [4] => 1337205600 [5] => 1338156000 [6] => 1342216800 [7] => 1344981600 [8] => 1351724400 [9] => 1352588400 [10] => 1356390000 ) */