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

Toutoul Messages postés 55 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 26 mars 2010 - 20 juil. 2005 à 02:49
 Schtom - 7 juin 2015 à 21:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32791-liste-des-jours-feries-d-une-annee

Alsace-Moselle (départements 67, 68 et 57).
chris188 Messages postés 6 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 11 août 2008
24 déc. 2009 à 12:34
@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]!="") {...}
kromei Messages postés 27 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 19 juillet 2010
2 avril 2009 à 08:27
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 !';
lbaumont Messages postés 2 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 9 décembre 2009
6 janv. 2009 à 15:02
Merci cyberDenix, cela me semble plus propre
CyberDenix Messages postés 17 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 24 décembre 2007
16 févr. 2008 à 18:14
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...';
CyberDenix Messages postés 17 Date d'inscription lundi 6 octobre 2003 Statut Membre Dernière intervention 24 décembre 2007
16 févr. 2008 à 16:55
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 :)
cs_pharm Messages postés 1 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 6 février 2007
6 févr. 2007 à 15:03
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;
}
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
21 juil. 2005 à 05:46
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...
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
20 juil. 2005 à 12:57
a utilisé comme ca
//// * DEFINITION JOURS FERIES
$jour=@mktime(0,0,0,$MoisEnCours, $premierJourSemaine+$i, $AnneeEnCours);
$fete=GetFeastday($jour);
aquewel Messages postés 143 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 6 juin 2010
20 juil. 2005 à 12:56
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 '';
}
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 03:06
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
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 02:57
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 ...
Toutoul Messages postés 55 Date d'inscription samedi 5 octobre 2002 Statut Membre Dernière intervention 26 mars 2010
20 juil. 2005 à 02:49
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ête du travail "][5] = 1;
$ferie["Fête nationale"][7] = 14;
$ferie["Noë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ête du travail';
$ferie['7']['14'] = 'Fête nationale';
$ferie['12']['25'] = 'Noë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...
Rejoignez-nous