Toutoul
Messages postés55Date d'inscriptionsamedi 5 octobre 2002StatutMembreDernière intervention26 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.
chris188
Messages postés6Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention11 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és27Date d'inscriptiondimanche 13 janvier 2008StatutMembreDernière intervention19 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és2Date d'inscriptionmardi 17 juin 2008StatutMembreDernière intervention 9 décembre 2009 6 janv. 2009 à 15:02
Merci cyberDenix, cela me semble plus propre
CyberDenix
Messages postés17Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention24 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és17Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention24 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.
cs_pharm
Messages postés1Date d'inscriptionmardi 12 août 2003StatutMembreDerniè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;
// Retour du tableau des jours fériés pour l'année demandée
return $tbJourFerie;
}
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 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és143Date d'inscriptionvendredi 14 mai 2004StatutMembreDerniè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és143Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 6 juin 2010 20 juil. 2005 à 12:56
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 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és809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 20108 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és55Date d'inscriptionsamedi 5 octobre 2002StatutMembreDernière intervention26 mars 2010 20 juil. 2005 à 02:49
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...
7 juin 2015 à 21:37
24 déc. 2009 à 12:34
$tableau=GetJoursFeries(2009);
echo $tableau["Assomption"];
if ($tableau[$daterecherchee]!="") {...}
2 avril 2009 à 08:27
echo 'c'est un jour férié, youpi !';
vois avez juste oublié le \
echo 'c\'est un jour férié, youpi !';
6 janv. 2009 à 15:02
16 févr. 2008 à 18:14
$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...';
16 févr. 2008 à 16:55
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 :)
6 févr. 2007 à 15:03
//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;
}
21 juil. 2005 à 05:46
20 juil. 2005 à 12:57
//// * DEFINITION JOURS FERIES
$jour=@mktime(0,0,0,$MoisEnCours, $premierJourSemaine+$i, $AnneeEnCours);
$fete=GetFeastday($jour);
20 juil. 2005 à 12:56
//* 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 '';
}
20 juil. 2005 à 03:06
20 juil. 2005 à 02:57
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 ...
20 juil. 2005 à 02:49
$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...