IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Gestion d'un calendrier avec les jours fériés


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut [Dates] Gestion d'un calendrier avec les jours fériés
    Bonjour,

    Pour des administrateurs il faudrai que je puisse gérer un calendrier mais qui tiendrai compte des jours fériés à venir.

    Certains site comme : http://www.almanach.free.fr/ arrive à gérer celà.

    Mais je me demande s'il est possible de faire quelque chose d'automatique, pour qu'il ne puisse pas saisir un jours férié ?

  2. #2
    Rédacteur
    Avatar de BrYs
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 014
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 014
    Points : 3 522
    Points
    3 522
    Par défaut
    Voici une fonction pour avoir les jours férier français :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    function date_jourFerie($mois, $an){
    		// pour avoir tous les jours feries de l'annee,
    		// passez un tableau de mois (ferie(range(1, 12), $an);
    		// pour les avoir sur plusieurs annees
    		// ferie(range(1, 24), $an); ferie(range(36, 12), $an);
     
    		if (is_array($an)){
    			$retour = array();
    			foreach ($an as $annee) {
    				if (is_array($mois)){
    					foreach ($mois as $m) {
    						$retour[$annee][$m] = opl_date_jourFerie($m, $annee);
    					}
    				}
    			}
    			return $retour;
    		}
     
    		// calcul des jours feries pour un seul mois.
    		if (mktime(0, 0, 0, $mois, 1, $an) == -1) {
    			return FALSE;
    		}
    		list($mois, $an) = explode("-", date("m-Y", mktime(0, 0, 0, $mois, 1, $an)));
    		$an = intval($an);
    		$mois = intval($mois);
     
    		// une constante
    		$jour = 3600*24;
     
    		// calcul paques
    		$G = $an % 19;
    		$C = (int)($an / 100);
    		$H = (int)($C - ($C / 4) - ((8*$C+13) / 25) + 19*$G + 15) % 30;
    		$I = (int)$H - (int)($H / 28)*(1 - (int)($H / 28)*(int)(29 / ($H +1))*((int)(21 - $G) / 11));
    		$J = ($an + (int)($an/4) + $I + 2 - $C + (int)($C/4)) % 7;
    		$L = $I - $J;
    		$m = 3 + (int)(($L + 40) / 44);
    		$d = $L + 28 - 31 * ((int)($m / 4));
    		$paques = mktime(0, 0, 0, $m, $d, $an);
     
    		// quelques fetes mobiles
    		$lundi_de_paques['mois'] = date( "n", $paques+1*$jour);
    		$lundi_de_paques['jour'] = date( "j", $paques+1*$jour);
    		$lundi_de_paques['nom'] = "Lundi de Pâques";
     
    		$ascencion['mois'] = date( "n", $paques+39*$jour);
    		$ascencion['jour'] = date( "j", $paques+39*$jour);
    		$ascencion['nom'] = "Jeudi de l'ascenscion";
     
    		$vendredi_saint['mois'] = date( "n", $paques-2*$jour);
    		$vendredi_saint['jour'] = date( "j", $paques-2*$jour);
    		$vendredi_saint['nom'] = "Vendredi Saint";
     
    		$lundi_de_pentecote['mois'] = date( "n", $paques+50*$jour);
    		$lundi_de_pentecote['jour'] = date( "j", $paques+50*$jour);
    		$lundi_de_pentecote['nom'] = "Lundi de Pentecôte";
     
    		// France
    		$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;
    		$ferie["Lendemain de Noël (Alsace seulement)"][12] = 25;
    		$ferie[$lundi_de_paques['nom']][$lundi_de_paques['mois']] =
    		$lundi_de_paques['jour'];
    		$ferie[$lundi_de_pentecote['nom']][$lundi_de_pentecote['mois']] =
    		$lundi_de_pentecote['jour'];
    		$ferie[$ascencion['nom']][$ascencion['mois']] = $ascencion['jour'];
    		$ferie[$vendredi_saint['nom']." (Alsace)"][$vendredi_saint['mois']]=
    		$vendredi_saint['jour'];
     
    		// reponse
    		$reponse = array();
    		while(list($nom, $date)= each($ferie)){
    			if (isset($date[$mois])){
    				// une fete a date calculable
    				$reponse[$date[$mois]]=$nom;
    			}
    		}
    		ksort($reponse);
    		return $reponse;
    	}
    ça t'aidera pour ton calendrier

    PS : Probabelement à remanier, j'ai fait ça il y a longtemps, donc probablement qu'il subsiste des trucs à la old school (exemple le while à la place du foreach)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    Merci beacoup pour ta réponse, je vais y regarder de plus près

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    En faisant "rechercher" avec férié sur ce forum, tu trouveras 3 ou 4 topics qui traitent du sujet des jours fériés et qui devraient grandement t'aider je pense. Bon courage.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Pour le calcule de la date de Pâques, voir la fonction easter_date()

Discussions similaires

  1. Gestion d'un championnat avec les graphes.
    Par barette54 dans le forum Langage
    Réponses: 1
    Dernier message: 16/05/2008, 16h35
  2. Compte a rebours avec les jours,heurs minutes et secondes.
    Par dad72 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/04/2008, 04h02
  3. comment creer une colonne avec les jours du mois
    Par Daniela dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2006, 11h34
  4. remplir une table avec les jours du mois
    Par david06600 dans le forum Langage
    Réponses: 6
    Dernier message: 04/08/2006, 10h29
  5. Remplissage table avec les jours d'un mois
    Par tomtom25 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/05/2005, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo