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

ASP.NET Discussion :

Bug Jours Fériés 2013


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 69
    Par défaut Bug Jours Fériés 2013
    Bonjour,

    Pour mon application je dois connaitre les jours fériés sur plusieurs années (Calcul de jours ouvrés, etc).
    Pour ce faire, j'avais trouvé la fonction ci-dessous

    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
     
    private static List<DateTime> CalculeJourFerier(int an)
            {
                DateTime JourAn = new DateTime(an, 1, 1);
                DateTime FeteTravail = new DateTime(an, 5, 1);
                DateTime Victoire1945 = new DateTime(an, 5, 8);
                DateTime FeteNational = new DateTime(an, 7, 14);
                DateTime Assomption = new DateTime(an, 8, 15);
                DateTime Toussaint = new DateTime(an, 11, 1);
                DateTime Armistice = new DateTime(an, 11, 11);
                DateTime Noel = new DateTime(an, 12, 25);
                double G = an % 19;
                double C = Math.Floor((double)an / 100);
                double H = (C - Math.Floor(C / 4) - Math.Floor((8 * C + 13) / 25) + 19 * G + 15) % 30;
                double I = H - Math.Floor(H / 28) * (1 - Math.Floor(H / 28) * Math.Floor(29 / (H + 1)) * Math.Floor((double)(21 - G) / 11));
                double J = (an * 1 + Math.Floor((double)an / 4) + I + 2 - C + Math.Floor(C / 4)) % 7;
                double L = I - J;
                int MoisPaques = (int)(3 + Math.Floor((L + 40) / 44));
                int JourPaques = (int)(L + 28 - 31 * Math.Floor((double)MoisPaques / 4));
                DateTime Paques = new DateTime(an, MoisPaques - 1, JourPaques);
                DateTime VendrediSaint = new DateTime(an, MoisPaques, JourPaques);
                DateTime LundiPaques = new DateTime(an, MoisPaques, JourPaques + 1);
                DateTime Ascension = new DateTime(an, MoisPaques, JourPaques).AddDays(39);
                DateTime Pentecote = new DateTime(an, MoisPaques, JourPaques).AddDays(49);
                DateTime LundiPentecote = new DateTime(an, MoisPaques, JourPaques).AddDays(50); ;
     
                List<DateTime> JourFerier = new List<DateTime>();
                JourFerier.Add(JourAn);
                JourFerier.Add(FeteTravail);
                JourFerier.Add(Victoire1945);
                JourFerier.Add(Assomption);
                JourFerier.Add(FeteNational);
                JourFerier.Add(Toussaint);
                JourFerier.Add(Armistice);
                JourFerier.Add(Noel);
                JourFerier.Add(VendrediSaint);
                JourFerier.Add(LundiPaques);
                JourFerier.Add(Ascension);
                JourFerier.Add(LundiPentecote);
     
                return JourFerier;
            }
    Seulement la fonction plante pour 2013, j'aurai donc voulu savoir si l'un d'entre vous avait la solution ou une autre fonction qui ne plante pas.

    Merci

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Ton code plante car dans la variable MoisPaques (ligne 18), tu mets la valeur 3.

    Ensuite ligne 19, dans JourPaques, tu mets la valeur 31.

    Puis ligne 20, tu essaies de créer une date ayant les valeurs suivantes :
    - Année = 2013
    - Mois = 2 (tu fais MoisPaques - 1, pourquoi ?)
    - Jour = 31

    Comme Février n'a pas 31 jours, ça coince...

    [EDIT]: Il y a une méthode pour calculer Pâques sur CodeProject.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 69
    Par défaut
    Merci pour ta réponse Matt07,

    C'est un code tout fait que j'ai trouvé sur la plupart des lien google sur le sujet.
    Il fonctionne sur toute les années sauf 2013

    Merci pour le bout de code (J'ai testé ), du coup je vais pouvoir calculer ce qu'il me manquait.

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

Discussions similaires

  1. [Dates] Algorithme de jours fériés
    Par franfr57 dans le forum Langage
    Réponses: 18
    Dernier message: 13/05/2012, 16h38
  2. [Dates] Gestion d'un calendrier avec les jours fériés
    Par maximenet dans le forum Langage
    Réponses: 4
    Dernier message: 05/05/2006, 08h41
  3. Les jours fériés.
    Par davcha dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/01/2006, 14h03
  4. Jours fériés+Oracle
    Par e77em dans le forum Oracle
    Réponses: 3
    Dernier message: 20/09/2005, 12h20
  5. Jours fériés
    Par djool dans le forum Access
    Réponses: 11
    Dernier message: 06/11/2004, 00h16

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