Snippet #23 ~ PHP: Trouver les jours fériés (fixes et mouvants)

Voila une petite fonction PHP permettant de définir si la date fournie en paramètre (au format timestamp) est un jour férié ou non.

Cette fonction retourne true si le jour est férié, false dans le cas contraire

?php	
/**
	* Cette fonction retourne un tableau de timestamp correspondant
	* aux jours fériés en France pour une année donnée.
	*/
	function isNotWorkable($date)
	{

	  	if ($date === null)
	  	{
	    	$date = time();
	  	}

	 	$date = strtotime(date('m/d/Y',$date));

	 	$year = date('Y',$date);

		$easterDate  = easter_date($year);
		$easterDay   = date('j', $easterDate);
		$easterMonth = date('n', $easterDate);
		$easterYear   = date('Y', $easterDate);

		$holidays = array(
	    // Dates fixes
	    mktime(0, 0, 0, 1,  1,  $year),  // 1er janvier
	    mktime(0, 0, 0, 5,  1,  $year),  // Fête du travail
	    mktime(0, 0, 0, 5,  8,  $year),  // Victoire des alliés
	    mktime(0, 0, 0, 7,  14, $year),  // Fête 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

	    // Dates variables
	    mktime(0, 0, 0, $easterMonth, $easterDay + 1,  $easterYear),
	    mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear),
	    mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear),
		);

  	return in_array($date, $holidays);
	}
?>

Petit exemple d’utilisation :

<?php
    if(isNotWorkable(time())){
	echo 'Nous sommes un jour férié !! Apéro !!';
    }else{
	echo 'Nous sommes un jour normal, au boulot :p';
    }
?>

6 réactions au sujet de « Snippet #23 ~ PHP: Trouver les jours fériés (fixes et mouvants) »

  1. Yosko Réponse

    Sympa, je me garde ça sous le coude.

    Pour les “$easterDay + 1”, “+39”, “+50” : ça corresponds à quelles occasions ? Ce sont les seuls que tu n’as pas précisé en commentaire.

    • Idleman Auteur ArticleRéponse

      Rhoalala on reconnais les athés ^^,

      paques + 40 = ascension
      paques + 50 = Pentecôte
      (paques-1) + 1 = heuh, pâques ^^

        • Idleman Auteur ArticleRéponse

          T’inquiète moi non plus, j’ai triché sur Wikipédia ^^, en plus je suis pastafariste et on a pas les mêmes jours sacrés :p

          • 2jR

            Salut !
            Merci beaucoup, je pense que ça va me servir.
            Toutefois, comment afficher quelque chose du genre “Nous sommes un jour férié ! c’est noël…”

  2. abriotde Réponse

    Pâques n’est pas un jour férié, c’est un Dimanche et en tant que Dimanche, il est chômé. C’est le lundi de Pâque qui est férié.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.