cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 2011
-
29 juin 2005 à 11:38
Trenyture -
14 févr. 2018 à 12:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Je suis tombé sur ta fonction qui est pas mal, mais je voulais partagé la mienne. Je devais calculer les jours fériés fixes et non fixes depuis 2008 jusqu'à l'année actuelle ... voici donc ma fonction :
/*Retourne tous les jours fériés fixes et non fixes depuis 2000 jusqu'à l'année en cours (paques, ascension et pentecote) sous forme d'array*/
private function getHolidays(){
/*Jours fériés fixes*/
$holidayDays = ['*-01-01', '*-05-01', '*-05-08', '*-07-14', '*-08-15', '*-11-01', '*-11-11', '*-12-25'];
/*Depuis 2008 jusqu'a l'année en cours*/
for ($i=2008; $i <= intval(date('Y')); $i++) {
//Calcul du lundi de pâques
$paques = date('Y-m-d', strtotime(date('Y-m-d', easter_date($i)).'+1days'));
//Calcul du jeudi de l'ascension (38 jours après paques)
$ascension = date('Y-m-d', strtotime($paques.'+38days'));
//Calcul du lundi de pentecôte (11 jours après ascension)
$pentecote = date('Y-m-d', strtotime($ascension.'+11days'));
/* On pousse le tout dans le tableau*/
array_push($holidayDays, $paques, $ascension, $pentecote);
}
/*On envoie le tableau*/
return $holidayDays;
}
ahmedshaiek
Messages postés2Date d'inscriptionsamedi 13 juin 2009StatutMembreDernière intervention30 juin 2011 30 juin 2011 à 12:26
vous pouvez m aider comment je peut calculer combien de jour fériée qui vienne successive parais une date de fin pour savoir la prochaine de retour o travaille tenir conte des weekend sachant quel le week-end seulement le dimanche samedi et un jour de travaille
ex si en ai le 02/07/2011 sachant que le 03/07/20011 et un dimanche 04/07/2011 et 05/07/2011 sont des jour fériée alors le résulta sa sera 3 jour de repos
merci de votre aide
sensoide
Messages postés102Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention 1 août 2007 21 juil. 2006 à 13:30
Au faite sur ce code il y a comme qui dirait un gros bug!!
Par ce que si l'un des jours fériés de l'année tombe un samedi ou un dimanche, bah il sera compté deux fois. Ce qui forcement va fausser le résultat final.
Me trompes-je? J'attends vos réponse et un correctif si possible.
Merci
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006 30 juin 2005 à 16:42
Genre du 31/07/2005 au 01/08/2005 je trouve 0 jours ouvrables. Alors que je devrais en avoir 2 ... Alors que du 01/06/2005 au 02/06/2005 j ai bien 2 jours ouvrables.
Si qq1 a une idée je le remercie d'avance
nagrom_om
Messages postés163Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention 1 novembre 2006 30 juin 2005 à 16:36
Merci pour vos remarques. J'ai encore un probleme. En fait je pense que ca vient des années bisextiles.
J ai utilisé un floor pour arrondir mais le probleme c'est que sur une difference de plusieurs années la fonctions zappe des jours.
De plus je crois que la fonction deconne également sur le passage d'un mois à l'autre il y a des erreurs de calcul.
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 29 juin 2005 à 16:51
Il y a 2 bugs.
Cette ligne :
while ($timestampStart != $timestampEnd)
doit être remplacée par :
while ($timestampStart <= $timestampEnd)
car si $timestampEnd correspond à un jour férié, ce n'est pas pris en compte.
Si l'on est à cheval su 2 années, le 1er janvier n'est pas pris en compte car l'incrémentation de $jour fait qu'il vaut 32.
willinfeo
Messages postés55Date d'inscriptionvendredi 25 juillet 2003StatutMembreDernière intervention 4 décembre 2005 29 juin 2005 à 15:58
Ok t'as raison, mais alors ne dit pas que l'ascension est 40 jours apres Paques !!!!!!!!
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 29 juin 2005 à 14:50
C'est bien 39 jours qu'il faut ajouter et non pas 40
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 29 juin 2005 à 14:44
C'est 39 jours et non pas 40
willinfeo
Messages postés55Date d'inscriptionvendredi 25 juillet 2003StatutMembreDernière intervention 4 décembre 2005 29 juin 2005 à 14:32
Salut,
easter_date retourne la date du dimanche de Paques, donc pour le lundi de Paques ajoute 1 jour, l'ascension est 40 jours apres le dimanche de Paques donc il faut ajouter ni 39 ni 38 mais 40. La pentecote est bien 11 jour apres l'ascension, donc ca sera juste quand la date de l'ascension le sera. (attention au commentaire: t'as mis que la pentecote etait 11 jours apres paques).
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 29 juin 2005 à 11:38
Bonjour,
Il y a une petite erreur dans le calcul du jour de l'Ascension : cette fête se situe 40 jours après Pâques, il faut donc ajouter 39 jours et non 38.
Modifié le 15 févr. 2018 à 22:29
30 juin 2011 à 12:26
ex si en ai le 02/07/2011 sachant que le 03/07/20011 et un dimanche 04/07/2011 et 05/07/2011 sont des jour fériée alors le résulta sa sera 3 jour de repos
merci de votre aide
21 juil. 2006 à 13:30
Par ce que si l'un des jours fériés de l'année tombe un samedi ou un dimanche, bah il sera compté deux fois. Ce qui forcement va fausser le résultat final.
Me trompes-je? J'attends vos réponse et un correctif si possible.
Merci
30 juin 2005 à 16:42
Si qq1 a une idée je le remercie d'avance
30 juin 2005 à 16:36
$nbJour = ($timestamp_retour-$timestamp_depart/(60*60*24);
$nbJourOuvrable = $nbJour - jour_ferie($timestamp_depart,$timestamp_retour);
J ai utilisé un floor pour arrondir mais le probleme c'est que sur une difference de plusieurs années la fonctions zappe des jours.
De plus je crois que la fonction deconne également sur le passage d'un mois à l'autre il y a des erreurs de calcul.
29 juin 2005 à 16:51
Cette ligne :
while ($timestampStart != $timestampEnd)
doit être remplacée par :
while ($timestampStart <= $timestampEnd)
car si $timestampEnd correspond à un jour férié, ce n'est pas pris en compte.
Si l'on est à cheval su 2 années, le 1er janvier n'est pas pris en compte car l'incrémentation de $jour fait qu'il vaut 32.
29 juin 2005 à 15:58
29 juin 2005 à 14:50
29 juin 2005 à 14:44
29 juin 2005 à 14:32
easter_date retourne la date du dimanche de Paques, donc pour le lundi de Paques ajoute 1 jour, l'ascension est 40 jours apres le dimanche de Paques donc il faut ajouter ni 39 ni 38 mais 40. La pentecote est bien 11 jour apres l'ascension, donc ca sera juste quand la date de l'ascension le sera. (attention au commentaire: t'as mis que la pentecote etait 11 jours apres paques).
29 juin 2005 à 11:38
Il y a une petite erreur dans le calcul du jour de l'Ascension : cette fête se situe 40 jours après Pâques, il faut donc ajouter 39 jours et non 38.