Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Jours feries "variables"

5 réponses
Avatar
- = Cyriloch = -
Bonjour à Tous,
Je cherche à construire fonction pemettant de savoir si un jour donné
est travaillé ou non, quelque chose du type de ce qui suit. Pour les
jours fériés "fixes", du type 01/01 ou 01/05, pas de souci, mais je
voudrais savoir si quelqu'un pouvait m'orienter en ce qui concerne les
jours fériés "variables" d'une année à l'autre, notamment les fêtes
religieuses. De façon à ne pas réinventer la roue...
Autrement dit je cherche à remplir mon tableau des jours fériés
$Tab_JoursFeries
Bien entendu, j'ai posé la question au service PHP du Vatican, mais pas
de réponse pour l'instant... :-)
Avec mes remerciements et cordialement,
--
Cyriloch


function JourDeTravail($DateJour) {
$An = date('Y',$DateJour);
$Tab_JoursFeries = array("$An-01-01", "$An-05-01", ...);
$JourVerif = date('D', $DateJour);
if($JourVerif == 'Sat' || $JourVerif == 'Sun' || in_array($DateJour,
$Tab_JoursFeries)) {
$Travail = '0';
} else {
$Travail = '1';
}
return $Travail;
}

5 réponses

Avatar
Thomas Labourdette
Bonjour,

- = Cyriloch = - a écrit le vendredi 25 août 2006 15:03 :

Je cherche à construire fonction pemettant de savoir si un jour donné
est travaillé ou non, quelque chose du type de ce qui suit.


J'ai ça qui est à adapter (ONE_DAY est égal 86400, le paramètre $date est
du type 'timestamp')

private function isFerie($date)
{
$ferie[1][1]=1;
$ferie[5][1]=1;
$ferie[5][8]=1;
$ferie[7][14]=1;
$ferie[8][15]=1;
$ferie[11][1]=1;
$ferie[25][12]=1;
$now=getDate($date);
$easterêster_date($now['year']);
$paques=getDate($easter);
$lundi_paques=getDate($easter+self::ONE_DAY);
$ascension=getDate($easter+(self::ONE_DAY*39));
$pentecote=getDate($easter+(self::ONE_DAY*49));
$lundi_pentecote=getDate($easter+(self::ONE_DAY*50));
$ferie[$paques['mon']][$paques['mday']]=1;
$ferie[$lundi_paques['mon']][$lundi_paques['mday']]=1;
$ferie[$ascension['mon']][$ascension['mday']]=1;
$ferie[$pentecote['mon']][$pentecote['mday']]=1;
$ferie[$lundi_pentecote['mon']][$lundi_pentecote['mday']]=1;
if($ferie[$now['mon']][$now['mday']]==1)
return true;
else
return false;
}


@+
--
Tex PLOZLODIMATE (signature et citation aléatoires)
LOI (à la con)
Il est illégal pour toute personne de sexe masculin, a l'intérieur des
limites de la ville, de faire un clin d'oeil a toute personne de sexe
féminin qu'il ne connaît pas. (Ottumwa, Iowa)

Avatar
Yanick
- = Cyriloch = - wrote:
Bonjour à Tous,
Je cherche à construire fonction pemettant de savoir si un jour donné
est travaillé ou non


Je n'ai pas fait de test sur cette function, mais strtotime()
functionne très bien pour ce que tu veux faire :


$holidays = array( "1 january %y",
"31 march %y + 1 sunday", // Pâques (1er
dimanche d'avril)
"30 april %y + 2 sundays", // fête des
mères (2e dimanche mai)
"31 october %y",
"25 december %y"
); // etc.

function isHolyday( $y, $m, $d ) {
$today = strtotime( "{$y}-{$y}-{$y}" );
$result = FALSE;

foreach ( $holidays AS $holiday ) {
// remplacer les tokens...
$str_date = str_replace( array( '%y', '%m', '%d' ), array( $y, $m,
$d ), $holiday );

// vérifier si le jour férié est aujourd'hui
if ( strtotime( $str_date ) == $today ) {
$result = TRUE;
break;
}
}

return $result;
}


Bonne chance !

Avatar
Thomas Labourdette
Yanick a écrit le vendredi 25 août 2006 22:18 :
[...]
Je n'ai pas fait de test sur cette function, mais strtotime()
functionne très bien pour ce que tu veux faire :


$holidays = array( "1 january %y",
"31 march %y + 1 sunday", // Pâques (1er
dimanche d'avril)


Le problème c'est bien le Dimanche de Pâques qui peut se situer entre le 22
Mars et le 25 Avril (voir :
http://www.bdl.fr/fr/ephemerides/astronomie/Promenade/pages4/440.html
et
http://www.bdl.fr/fr/ephemerides/astronomie/Promenade/pages4/442.html )

Mais heureusement, PHP nous offre la fonction estear_date
(http://fr.php.net/manual/fr/function.easter-date.php)

@+
--
Fabrice DELABASTILLE (signature et citation aléatoires)
Horizon pas net, reste à la buvette.
(Proverbe breton)

Avatar
- = Cyriloch = -

Le problème c'est bien le Dimanche de Pâques qui peut se situer entre le 22
Mars et le 25 Avril (voir :
http://www.bdl.fr/fr/ephemerides/astronomie/Promenade/pages4/440.html
et
http://www.bdl.fr/fr/ephemerides/astronomie/Promenade/pages4/442.html )

Mais heureusement, PHP nous offre la fonction estear_date
(http://fr.php.net/manual/fr/function.easter-date.php)

@+


En ce dimanche "tout à fait classique", bonjour...

J'ai tout compris : heureusement, la fonction estear_date nous donne la
date du dimanche de Pâques pour une année donnée *qui n'est pas
forcément le premier dimanche d'avril*, à partir de laquelle il est
facile de déterminer la date du lundi de Pâques, du lundi de Pentecôte
et du jeudi de l'Ascension...
Aussi je n'ai pas encore testé, mais quelque chose de ce type devrait
fonctionner :
$An = date('Y',$JourATester);
$PaquesDim = easter_date($An);
$PaquesLun = date('Y-m-d', ($PaquesDim + 24*3600));
$PentecoteLun = date('Y-m-d', ($PaquesDim + 50*24*3600));
$AscensionJeu = date('Y-m-d', ($PaquesDim + 39*24*3600));
$Tab_JoursFeries = array("$PaquesLun", "$AscensionJeu",
"$PentecoteLun"); // + les jours fériés fixes bien entendu...

Merci beaucoup pour ces informations limpides,

Cordialement,

--
Cyriloch

Avatar
didier

Le problème c'est bien le Dimanche de Pâques qui peut se situer entre
le 22
Mars et le 25 Avril (voir :

Mais heureusement, PHP nous offre la fonction estear_date
(http://fr.php.net/manual/fr/function.easter-date.php)


En ce dimanche "tout à fait classique", bonjour...

J'ai tout compris : heureusement, la fonction estear_date nous donne la

Aussi je n'ai pas encore testé, mais quelque chose de ce type devrait
fonctionner :
$An = date('Y',$JourATester);
$PaquesDim = easter_date($An);
$PaquesLun = date('Y-m-d', ($PaquesDim + 24*3600));



Attention aux 24*3600 : je viens de les supprimer, après avoir eu un
gros problème avec le passage à l'heure d'hiver le 29 octobre, dans
l'affichage d'un planning.
Préférer un date("d",$PaquesDim)+39 etc ...

Didier.