begin process at 2012 05 27 19:06:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > LISTE DES JOURS FÉRIÉS D'UNE ANNÉE

LISTE DES JOURS FÉRIÉS D'UNE ANNÉE


 Information sur la source

Note :
6,2 / 10 - par 5 personnes
6,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Niveau :Débutant Date de création :20/07/2005 Date de mise à jour :20/07/2005 00:38:33 Vu / téléchargé :29 069 / 440

Auteur : Zlub

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

L'objectif est de lister dans un tableau les jours fériés d'une année donnée.

De cette façon si vous devez vérifier si une date est ouvrable,
vous n'avez plus qu'à tester qu'elle n'est pas dans le tableau des jours
fériés...


++

Zlub

Source

  • <?php
  • function ferie($mois,$an, $alsace = false){
  • if (is_array($mois)){
  • $retour = array();
  • foreach ($mois as $m) {
  • $r = ferie($m, $an);
  • $retour[$m] = ferie($m, $an);
  • }
  • 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;
  • // les jours fixes
  • $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;
  • if ($alsace)
  • $ferie["Lendemain de Noël (Alsace seulement)"][12] = 25;
  • // quelques fetes mobiles
  • $lundi_de_paques['mois'] = date( "n", easter_date($an)+1*$jour);
  • $lundi_de_paques['jour'] = date( "j", easter_date($an)+1*$jour);
  • $lundi_de_paques['nom'] = "Lundi de Pâques";
  • $ascencion['mois'] = date( "n", easter_date($an)+39*$jour);
  • $ascencion['jour'] = date( "j", easter_date($an)+39*$jour);
  • $ascencion['nom'] = "Jeudi de l'ascenscion";
  • $vendredi_saint['mois'] = date( "n", easter_date($an)-2*$jour);
  • $vendredi_saint['jour'] = date( "j", easter_date($an)-2*$jour);
  • $vendredi_saint['nom'] = "Vendredi Saint";
  • $lundi_de_pentecote['mois'] = date( "n", easter_date($an)+50*$jour);
  • $lundi_de_pentecote['jour'] = date( "j", easter_date($an)+50*$jour);
  • $lundi_de_pentecote['nom'] = "Lundi de Pentecôte";
  • $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'];
  • if ($alsace)
  • $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;
  • }
  • function tab_jours_feriés($an) {
  • return ferie(range(1,12),$an);
  • }
  • /************ EXECUTION *********************/
  • $année = date("Y");
  • $fériées = tab_jours_feriés($année);
  • echo "<br>";
  • while (list($mois, $tab) = each ($fériées)) {
  • while (list($jour, $fete) = each ($tab)) {
  • echo "$jour/$mois/$année => $fete \n<br>";
  • }
  • }
  • ?>
<?php

function ferie($mois,$an, $alsace = false){
    if (is_array($mois)){
    	$retour = array();
    	foreach ($mois as $m) {
			$r = ferie($m, $an);
			$retour[$m] = ferie($m, $an);
    	}
    	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;

    // les jours fixes
	$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;
    if ($alsace)
        $ferie["Lendemain de Noël (Alsace seulement)"][12]	= 25;

    // quelques fetes mobiles
    $lundi_de_paques['mois'] = date( "n", easter_date($an)+1*$jour);
    $lundi_de_paques['jour'] = date( "j", easter_date($an)+1*$jour);
    $lundi_de_paques['nom']  = "Lundi de Pâques";

    $ascencion['mois'] = date( "n", easter_date($an)+39*$jour);
    $ascencion['jour'] = date( "j", easter_date($an)+39*$jour);
    $ascencion['nom']  = "Jeudi de l'ascenscion";

    $vendredi_saint['mois'] = date( "n", easter_date($an)-2*$jour);
    $vendredi_saint['jour'] = date( "j", easter_date($an)-2*$jour);
    $vendredi_saint['nom']  = "Vendredi Saint";

    $lundi_de_pentecote['mois'] = date( "n", easter_date($an)+50*$jour);
    $lundi_de_pentecote['jour'] = date( "j", easter_date($an)+50*$jour);
    $lundi_de_pentecote['nom']  = "Lundi de Pentecôte";


	$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'];
	if ($alsace)
	   $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;
}
function tab_jours_feriés($an) {
    return ferie(range(1,12),$an);
}

/************ EXECUTION *********************/
$année = date("Y");
$fériées = tab_jours_feriés($année);

echo "<br>";
while (list($mois, $tab) = each ($fériées)) {
    while (list($jour, $fete) = each ($tab)) {
        echo "$jour/$mois/$année  => $fete \n<br>";
    }

}
?>

 Conclusion

vous pouver definir la plage de calcul de la liste des jours fériés :

ferie(range(7,9),$an); // pour calculer entre Juillet et Septembre
ferie(range(7,7),$an); // pour calculer pour Juillet
ferie(range(1,12),$an); // ou tab_jours_feriés($an)   .... pour calculer pour toute l'année

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

20 juillet 2005 00:38:33 :
expliquation complémentaires

 Sources du même auteur

RECUPERATION/AFFECTATION AUTOMATIQUE DES DONNÉES ENVOYÉES PA...

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

Commentaires et avis

Commentaire de Toutoul le 20/07/2005 02:49:58

Bizarre tes variables.... moi a la place de :

$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&ecirc;te du travail "][5] = 1;
$ferie["F&ecirc;te nationale"][7] = 14;
$ferie["No&euml;l"][12] = 25;

J'aurais utilisé
$ferie['mois']['jour'] = 'nom';
$ferie['1']['1'] = 'Jour de l'an';
$ferie['5']['8'] = 'Armistice 39-45';
$ferie['11']['1'] = 'Toussaint';
$ferie['11']['11'] = 'Armistice 14-18';
$ferie['8']['15'] = 'Assomption';
$ferie['5']['1'] = 'F&ecirc;te du travail';
$ferie['7']['14'] = 'F&ecirc;te nationale';
$ferie['12']['25'] = 'No&euml;l';

Aussi comme tu as pu aussi le voir, j'ai remplacé les " par des '... C'est mieux...

Autrement, pour la fête nationale, tu donnes que ceux de la france... hors, si quelqu'un d'un autre pays veux l'utiliser, c'est impossible... Donc, pour que ce script personnalisable, essaye d'utiliser une base de donnée... Et si tu veux, tu peux ainsi utiliser d'autre variable, comme le nom du pays et la région... exemple de l'alsace et la france qui n'ont pas toute les mêmes spécificitéS...

Commentaire de Zlub le 20/07/2005 02:57:04

Ok pour ta remarque sur le tableau férié, je vais corriger ça

Par contre faire une base de données pour tout les type de jours fériées en fonction des pays ça me semble un peu abusif...

Pour les ' au lieu de " ... j'utilise les deux ...

Commentaire de Zlub le 20/07/2005 03:06:12

Mais non, en fait, je prefere comme ça vu que certaines date ne sont pas fixe ... style Pâques... Et je ne veux pas parcourir le tableau pour trouver la date de Pâques... donc non ça reste ainsi

Commentaire de aquewel le 20/07/2005 12:56:27

ca ressemble un peu a ca (trouver sur internet)

//* FONCTION CALCUL JOURS FERIES
function GetFeastday($date)
{
    $d=@getdate($date);
    if($d['mday']==1 && $d['mon']==1) return 'Jour de l\'An';
    else if($d['mday']==1 && $d['mon']==5) return 'Fête du travail';
    else if($d['mday']==8 && $d['mon']==5) return 'Victoire 1945';
    else if($d['mday']==14 && $d['mon']==7) return 'Fête Nationale';
    else if($d['mday']==15 && $d['mon']==8) return 'Assomption';
    else if($d['mday']==1 && $d['mon']==11) return 'Toussaint';
    else if($d['mday']==11 && $d['mon']==11) return 'Armistice 1918';
    else if($d['mday']==25 && $d['mon']==12) return 'Noël';
    else
    {
        //Autres cas
        //Paques
        $paques=@getdate(easter_date($d['year']));
        
        //Lundi de paques
        $Lpaques=$paques;
        for($i=0; $Lpaques['wday']!=1 && $i<7; $i++)
        $Lpaques=@getdate(@mktime(0,0,0,$Lpaques['mon'],$Lpaques['mday']+$i,$Lpaques['year']));
        if($d['mday']==$Lpaques['mday'] && $d['mon']==$Lpaques['mon'])
        return 'Lundi de Pâques';
        else
        {
            //Pentecote=septième dimanche après Pâques
            $pentecote=@getdate(@mktime(0,0,0,$paques['mon'],$paques['mday']+49,$paques['year']));
            for($i=0; $pentecote['wday']!=0 &&$i<7; $i++)
            $pentecote=@getdate(@mktime(0,0,0,$pentecote['mon'],$pentecote['mday']+$i,$pentecote['year']));
            
            //Lundi de Pentecote
            $Lpentecote=@getdate(@mktime(0,0,0,$pentecote['mon'],$pentecote['mday']+1,$pentecote['year']));
            if($d['mday']==$Lpentecote['mday'] && $d['mon']==$Lpentecote['mon'])
            return 'Pentecôte';
            else
            {
                //Ascension = pentecote -10j
                $ascension=@getdate(@mktime(0,0,0,$pentecote['mon'],$pentecote['mday']-10,$pentecote['year']));
                if($d['mday']==$ascension['mday'] && $d['mon']==$ascension['mon'])
                return 'Ascension';
            }
        }
    }
    return '';
}

Commentaire de aquewel le 20/07/2005 12:57:20

a utilisé comme ca
//// * DEFINITION JOURS FERIES
    $jour=@mktime(0,0,0,$MoisEnCours, $premierJourSemaine+$i, $AnneeEnCours);
    $fete=GetFeastday($jour);

Commentaire de Zlub le 21/07/2005 05:46:06

Des méthodes pour definir les jours fériés y'en a pas des masses, vu que c'est basé sur un calcul de date ... donc oui si tu veux ça ressemble... sauf que là je retourne un tableau de jour fériés en vu de faire des traitements ... alors que là tu testes pour un seul jour...

Commentaire de pharm le 06/02/2007 15:03:02

Personnellement je préfère une fonction plus courte qui fournis la liste des jours fériés tel quel et après traiter le tableau en 1 dimension plus simplement.

//fonction de recherche des jours fériés de l'année demandée
function fcListJourFeries($iAnnee = 2000) {

//Initialisation de variables
$iCstJour = 3600*24;

// Détermination des dates toujours fixes
$tbJourFerie["Jour de l'an"]     = $iAnnee . "0101";
$tbJourFerie["Armistice 39-45"]  = $iAnnee . "0508";
$tbJourFerie["Toussaint"]        = $iAnnee . "1101";
$tbJourFerie["Armistice 14-18"]  = $iAnnee . "1111";
$tbJourFerie["Assomption"]       = $iAnnee . "0815";
$tbJourFerie["Fête du travail"]  = $iAnnee . "0501";
$tbJourFerie["Fête nationale"]   = $iAnnee . "0714";
$tbJourFerie["Noël"]    = $iAnnee . "1225";

// Récupération des fêtes mobiles
      $tbJourFerie["Lundi de Pâques"]   = $iAnnee . date( "md", easter_date($iAnnee) + 1*$iCstJour );
      $tbJourFerie["Jeudi de l'ascenscion"] = $iAnnee . date( "md", easter_date($iAnnee) + 39*$iCstJour );
      $tbJourFerie["Lundi de Pentecôte"]   = $iAnnee . date( "md", easter_date($iAnnee) + 50*$iCstJour );

// Retour du tableau des jours fériés pour l'année demandée
return $tbJourFerie;
}

Commentaire de CyberDenix le 16/02/2008 16:55:54

Le lendemain de noël, c'est pas le 26/12 au lieu du 25/12 ?
Et puis il me semble que le vendredi saint est un jour de fête réservé à l'Alsace.
Et il y a encore toutes les exception de Guyane...etc.

http://fr.wikipedia.org/wiki/Jour_f%C3%A9ri%C3%A9#France

Bon courage :)

Commentaire de CyberDenix le 16/02/2008 18:14:50

function getPublicHoliday($year, $month, $day, $departement = false) {
    $array = array();
    for ($i = 1; $i < 13; ++$i) {
      $indice = ($i < 10) ? '0'.$i : $i;
      $array["$indice"] = array();
    }
    // National public holidays
    $array['01']['01']  = 'Jour de l\'an';
    $array['05']['01']  = 'Fête du travail';
    $array['05']['08']  = 'Armistice 39-45';
    $array['07']['14']  = 'Fête nationale';
    $array['08']['15']  = 'Assomption';
    $array['11']['01']  = 'Toussaint';
    $array['11']['11']  = 'Armistice 14-18';
    $array['12']['25']  = 'Noël';
    $timestamp = mktime(0, 0, 0, 03, 21 + easter_days($year) + 1, $year);
    $array[date('m', $timestamp)][date('d', $timestamp)]  = 'Lundi de Pâques';
    $timestamp = mktime(0, 0, 0, 03, 21 + easter_days($year) + 39, $year);
    $array[date('m', $timestamp)][date('d', $timestamp)]  = 'Jeudi de l\'ascension';
    $timestamp = mktime(0, 0, 0, 03, 21 + easter_days($year) + 50, $year);
    $array[date('m', $timestamp)][date('d', $timestamp)]  = 'Lundi de Pentecôte';
    // Spécial Public holidays
    if ($departement && ($departement == '57' || $departement == '67' || $departement == '68')) {
      $timestamp = mktime(0, 0, 0, 03, 21 + easter_days($year) - 2, $year);
      $array[date('m', $timestamp)][date('d', $timestamp)]  = 'Vendredi saint';
      $array['12']['26']  = 'Lendemain de Noël';
    }
    if ($departement && $departement == '971')
      $array['05']['27']  = 'Abolition de l\'esclavage';
    if ($departement && $departement == '972')
      $array['05']['22']  = 'Abolition de l\'esclavage';
    if ($departement && $departement == '973')
      $array['06']['10']  = 'Abolition de l\'esclavage';
    if ($departement && $departement == '974')
      $array['12']['20']  = 'Abolition de l\'esclavage';
    // Check if the date is a public holiday
    $monthToPrint = ($month < 10) ? '0'.$month : $month;
    $dayToPrint   = ($day < 10)   ? '0'.$day   : $day;
    if (isset($array["$monthToPrint"]) && isset($array["$monthToPrint"]["$dayToPrint"]))
      return $array["$monthToPrint"]["$dayToPrint"];
    return false;
  }



  if (getPublicHoliday(2007, 2, 16))
    echo 'c'est un jour férié, youpi !';
  else
    echo 'snif...';

Commentaire de lbaumont le 06/01/2009 15:02:45 2/10

Merci cyberDenix, cela me semble plus propre

Commentaire de kromei le 02/04/2009 08:27:12

bonjour je sais que cela fait 3 mois depuis le dernier commentaire mais dans le dernier code

echo 'c'est un jour férié, youpi !';

vois avez juste oublié le \

echo 'c\'est un jour férié, youpi !';

Commentaire de chris188 le 24/12/2009 12:34:59

@pharm : et on peut aussi remplir le tableau dans l'autre sens pour avoir accès aux 2

$tableau=GetJoursFeries(2009);

echo $tableau["Assomption"];

if ($tableau[$daterecherchee]!="") {...}

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales