begin process at 2012 02 12 06:55:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > FONCTION DE CALCUL DE JOURS FÉRIÉS

FONCTION DE CALCUL DE JOURS FÉRIÉS


 Information sur la source

 Description

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

Source

  • <?
  • // 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
  • ?>
<?

// 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
		
	
?>



 Sources du même auteur

FONCTIONS DE MODIFICATION DE DATES

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
Source avec Zip FONCTION QUI CALCULE L'AGE A PARTIR D'UNE DATE DE NAISSANCE par italiasky
PLANNING DE QUART AUJOURD'HUI par paillette76
Source avec Zip Source avec une capture CALENDRIER - FLOPTWO par floptwo
AFFICHAGE DU DÉCOMPTE D'UNE DATE PAR RAPPORT AVEC LA DATE AC... par GREGPUNK

Commentaires et avis

Commentaire de jeca le 29/06/2005 11:38:02

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.


Commentaire de willinfeo le 29/06/2005 14:32:33

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).

Commentaire de jeca le 29/06/2005 14:44:34

C'est 39 jours et non pas 40

Commentaire de jeca le 29/06/2005 14:50:34

C'est bien 39 jours qu'il faut ajouter et non pas 40

Commentaire de willinfeo le 29/06/2005 15:58:02

Ok t'as raison, mais alors ne dit pas que l'ascension est 40 jours apres Paques !!!!!!!!

Commentaire de jeca le 29/06/2005 16:51:35

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.

Commentaire de nagrom_om le 30/06/2005 16:36:42

Merci pour vos remarques. J'ai encore un probleme. En fait je pense que ca vient des années bisextiles.

$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.

Commentaire de nagrom_om le 30/06/2005 16:42:30

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

Commentaire de sensoide le 21/07/2006 13:30:24

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

Commentaire de ahmedshaiek le 30/06/2011 12:26:03

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

fonction d'ajout de jour à une date [ par bapti ] bonjour, je recherche d'urgence une fonction qui additionnerait une date avec un nombre de jours et qui retournerait une date, merci d'avance, baptist Récupération de Date, ou Prob Serveur ?? [ par Feebles ] Salut Tous Le Monde, Je débute en PHP, (mais pas en programmation), et j'ai un petit soucis pour récupérer la date du jour encour :j'ai essayer plusie Je trouve pas l'erreur sur mon script [ par Akash ] Salut à tous j'espère que vous pourrez m'aider. Voila le problème :Pour mon script de calendrier evenementiel j'ai besoin d'afficher des évènements pa Gestion de dates [ par tryoruda ] SalutJe souhaite quelques tuyaux pour gérer les dates :- un formulaire avec choix du jour / du mois / de l'année envoie vers un seul champ Mysql date- vérification d'une date [ par vir76 ] Salut tout le monde,Je dispose de la fonction suivante pour vérifier une date :&lt;html&gt;&lt;head&gt; &lt;title&gt; Page de vérification de date en tableau comme calendrier!! [ par titigrou ] kikou a tous!!!pffff j'ai un énorme problème et urgent a règler mais je n'arrive pas a voir l'erreur!!!!au secours!!!!j'ai une liste déroulante semain un lien avec un appel dynamique à un fichier [ par pyranhaz ] Bonjour,je suis pas très fort en php, voire même nul...je cherche à faire fonctionner un lien dans une page qui puisse réagir à la date du jour dans u Pb avec Date() & mktime() [ par LordDaedalus ] BonjourJe suis en train de créer un agenda en utilisant les fonctions date() et mktime().j'utilise $Jour = Date("d",mktime(Date("h")-24*10*7)Le jour e Nombres de jours entre 2 dates! [ par jimmy69 ] Bonjour a tous,Voila j'ai un p'tit stress ....si quelqu'un pouvait m'aider!En fait j'enregistre mes donnees ds une table mysql , des donnees comme le Calculer le nombre de jour entre deux dates [ par Seamless ] Salut tout le monde,J'aimerai quel façon vous utiliserez pour calculez le nombre de jour entre deux dates. La plus facile possible. Préciser juste si


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,075 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales