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] Tableau des jours fériés sur une année


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jahprend
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 255
    Par défaut [Dates] Tableau des jours fériés sur une année
    Bonjour,

    Après quelques recherches sur le net, j'ai trouvé quelques fonctions existantes pour savoir les jours qui sont fériés dans une année, mais pas vraiment ce que je recherche.

    J'aimerai savoir s'il existe une fonction (ou comment la faire) permettant de connaître les jours fériés d'une année de manière numérique ( je m'explique ).

    Exemple tout les jours (dans un tableau) ont pour valeur 0 (non-ferié) sauf le numéro 1 (nouvel an (1er janvier), numéro 131 (fête du travail (1er mai)) etc...

    Mon but n'est pas de savoir ceux de cette année ( car c'est facilement faisable),
    mais c'est de trouver comment coder ça pour n'importe quel année, de façon a toujours savoir les jours qui sont de base férié, et que je puisse modifier les 2-3 changements qu'il pourrai y avoir après.

    Hesitez pas à poser des questions, et ... merci d'avance

  2. #2
    Membre Expert

    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
    Par défaut
    Bonjour,

    Utiliser les N° de jours n'est pas une bonne idée, car ceux-ci peuvent changer d'une année sur l'autre (bissextile ou pas).
    D'autre part, le 1er mai n'est pas le jour N°131, mais 121, et cette année, N° 122 (bissextile). Certainement une faute de frappe.
    Il y a quelques années, j'avais fait ça :
    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
    <?php
      function calculPaques($annee)
      {
        if (function_exists ('easter_date')) 
        {	
          return easter_date($annee);
        } 
        else 
        {
          $H = (24 + 19 * ($annee % 19)) % 30;
          $I = floor($H - $H / 28);
          $J = ($annee + floor($annee / 4) + $I - 13) % 7;
          $L = $I - $J;
          $mois = floor(3 + ($L + 40) / 44);
          $jour = $L + 28 - 31 * floor($mois / 4);
     
          return $annee . '-' . $mois . '-' . $jour;
        }
      }
     
      function fetes($annee)
      {
        $paques = calculPaques($annee);
     
        //--- nb jours de décallage par rapport à Pâques -----------
        $fetesMobiles = array(
                              'Septuagésime'        => -63,
                              'Sexagésime'          => -56,
                              'Quinquagésime'       => -49,
                              'Mardi-Gras'          => -47,
                              'Cendres'             => -46,
                              'Quadragésime'        => -42,
                              'Reminiscere'         => -35,
                              'Oculi'               => -28,
                              'Mi-Carême'           => -24,
                              'Laetare'             => -21,
                              'Passion'             => -14,
                              'Rameaux'             => -7,
                              'Vendredi Saint'      => -2,
                              'Pâques'              => 0,
                              'Lundi de Pâques'     => 1,
                              'Quasimodo'           => 7,
                              'Ascension'           => 39,
                              'Pentecôte'           => 49,
                              'Lundi de Pentecôte'  => 50,
                              'Trinité'             => 56,
                              'Fête Dieu'           => 60
                             );
     
        $ferie = array();
        foreach ($fetesMobiles as $cle => $valeur)
        {
          $ferie[date('Y-m-d', strtotime($valeur . ' days', $paques))] = $cle;
        }
     
        $fetesFixes = array (
                              'jour de l\'an'    => '-01-01',
                              'Fête du travail'  => '-05-01',
                              'Victoire 39/45'   => '-05-08',													
                              'Fête Nationale'   => '-07-14',
                              'Assomption'       => '-08-15',
                              'Toussaint'        => '-11-01',
                              'Armistice 14/18'  => '-11-11',
                              'Noël'             => '-12-25'
                            );
     
        foreach ($fetesFixes as $cle => $valeur)
        {
          $ferie[$annee . $valeur] = $cle;
        }
        ksort($ferie);
        return $ferie;
      }
    //--------------------------------------------------------------------------------	
    //--------------------------------------------------------------------------------	
      $annee = 2008;
     
      $ferie = fetes($annee);
     
      foreach ($ferie as $cle => $valeur)
      {
        $date = implode('/', array_reverse(explode('-', $cle)));
        echo $valeur . ' => ' . $date . '<br>';
      }
    ?>
    Tu supprimes les éléments de tableau qui ne servent à rien, principalement '$fetesMobiles', et ça doit pouvoir faire.

  3. #3
    Membre éclairé Avatar de Jahprend
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 255
    Par défaut
    Merci de ta réponse, et oui tu as raison, ce n'est pas la bonne solution, mais du coup je vais les rentrer en dur les valeurs, ça à pas l'air de déranger mon maître de stage

  4. #4
    Membre Expert

    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
    Par défaut
    Tu ne peux mettre en dur que les fériés fixes. Les fêtes mobiles sont, comme leur nom l'indique, mobiles. Elles doivent être calculées à partir de la date de Pâques, qui est elle-même mobile. Surtout si, comme tu l'as dit :
    c'est de trouver comment coder ça pour n'importe quel année
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       $fetesMobiles = array(
                              'Pâques'              => 0,
                              'Lundi de Pâques'     => 1,
                              'Ascension'           => 39,
                              'Pentecôte'           => 49,
                              'Lundi de Pentecôte'  => 50
                             );
    Tu prends le script que je t'ai passé. Il fonctionne jusqu'en 2039. Cela devrait suffire, non ?

  5. #5
    Membre éclairé Avatar de Jahprend
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    255
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 255
    Par défaut
    Quand je t'ai dit "je vais les rentrer en dure", ça voulait dire que chaque année, un mec va prendre le calendrier, et noter les 10-12 dates dans un tableau en dure , un peu fastidieux, mais je fais ce qu'on me dit ! (/pigeon de stagiaire)

  6. #6
    Membre Expert

    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
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué !!!!!!!!
    De surcroit, cela interdit tout travail dans l'avenir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Obtenir une liste des jours fériés pour une année donnée
    Par metallica2 dans le forum Contribuez
    Réponses: 1
    Dernier message: 20/02/2014, 12h29
  2. Réponses: 2
    Dernier message: 20/01/2009, 13h31
  3. Réponses: 6
    Dernier message: 14/09/2008, 15h41
  4. Soustraire une date avec des jours et jours ouvrés
    Par celiaaa dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/05/2007, 22h37
  5. Réponses: 2
    Dernier message: 20/02/2007, 10h29

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