Fonction de calcul de jours fériés

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 713 fois - Téléchargée 28 fois

Contenu du snippet

Cette fonction renvoie le nombre de jours fériés de samedis et de dimanches entre 2 dates

Source / Exemple :


<?

// SERVANT AU CALCUL DES JOURS OUVRABLES
// Fonction retournant le nombre de jour fériés samedis et 
// dimanches entre 2 dates entrées en timestamp
function jour_ferie($timestampStart, $timestampEnd)
{ 
 	
	// Initialisation de la date de début
	$jour = date("d", $timestampStart); 
  	$mois = date("m", $timestampStart); 
  	$annee = date("Y", $timestampStart); 
	$nbFerie = 0;
	while ($timestampStart != $timestampEnd)
	{	
		
	  	// Définition des dates fériées fixes
		if($jour == 1 && $mois == 1) $nbFerie++; // 1er janvier 
		if($jour == 1 && $mois == 5) $nbFerie++; // 1er mai 
		if($jour == 8 && $mois == 5) $nbFerie++; // 5 mai 
		if($jour == 14 && $mois == 7) $nbFerie++; // 14 juillet 
		if($jour == 15 && $mois == 8) $nbFerie++; // 15 aout 
		if($jour == 1 && $mois == 11) $nbFerie++; // 1 novembre 
		if($jour == 11 && $mois == 11) $nbFerie++; // 11 novembre 
		if($jour == 25 && $mois == 12) $nbFerie++; // 25 décembre 
	  
	  	// Calcul du jour de pâques
		$date_paques = easter_date($annee); 
	  	$jour_paques = date("d", $date_paques); 
	  	$mois_paques = date("m", $date_paques); 
	  	if($jour_paques == $jour && $mois_paques == $mois) $nbFerie++; 
	  	// Pâques 
	  
	  	// Calcul du jour de l ascension (38 jours après Paques)
	  	$date_ascension = mktime(date("H", $date_paques), 
	  	date("i", $date_paques), 
	  	date("s", $date_paques), 
	  	date("m", $date_paques), 
	  	date("d", $date_paques) + 38, 
	  	date("Y", $date_paques) 
	  	); 
	  	$jour_ascension = date("d", $date_ascension); 
	  	$mois_ascension = date("m", $date_ascension); 
	  	if($jour_ascension == $jour && $mois_ascension == $mois) $nbFerie++; 
	  	//Ascension 
	  
	  	// Calcul de Pentecôte (11 jours après Paques)
		$date_pentecote = mktime(date("H", $date_ascension), 
	  	date("i", $date_ascension), 
	  	date("s", $date_ascension), 
	  	date("m", $date_ascension), 
	  	date("d", $date_ascension) + 11, 
	  	date("Y", $date_ascension) 
	  	); 
	  	$jour_pentecote = date("d", $date_pentecote); 
	  	$mois_pentecote = date("m", $date_pentecote); 
	  	if($jour_pentecote == $jour && $mois_pentecote == $mois) $nbFerie++; 
	  	//Pentecote 
	  
	  	// Calul des samedis et dimanches
		$jour_julien = unixtojd($timestampStart); 
	  	$jour_semaine = jddayofweek($jour_julien, 0); 
	  	if($jour_semaine == 0 || $jour_semaine == 6) $nbFerie++; 
	  	//Samedi (6) et dimanche (0)
	  
	  	// Incrémentation du nombre de jour ( on avance dans la boucle)
	  	$jour++;
	  	$timestampStart=mktime(0,0,0,$mois,$jour,$annee); 
	
	}
	  
	  return $nbFerie; 
	  
}//Fin de la fonction
		
	
?>

A voir également

Ajouter un commentaire

Commentaires

cs_jeca
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
11 -
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.
willinfeo
Messages postés
55
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
4 décembre 2005
-
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és
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
11 -
C'est 39 jours et non pas 40
cs_jeca
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
11 -
C'est bien 39 jours qu'il faut ajouter et non pas 40
willinfeo
Messages postés
55
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
4 décembre 2005
-
Ok t'as raison, mais alors ne dit pas que l'ascension est 40 jours apres Paques !!!!!!!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (nagrom_om)