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 Java Discussion :

Problème jour ouvré


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mai 2007
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Problème jour ouvré
    Bonjour tous le monde,
    J’ai un sérieux problème que j'espère que vous m'aider.

    Je veux vérifier pour une date donnée s'il est ouvré ou pas, donc j'ai utiliser la formule de zeller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public int zellerFormula(int dd, int mm, int yyyy) {
    		if (mm < 2) {
    			mm += 12;
    			yyyy--;
    		}
     
    		int cc = yyyy / 100;
    		int yy = yyyy % 100;
     
    		int k = (dd + (26 * (mm + 1)) / 10 + yy + yy / 4 + cc / 4 + 5 * cc) % 7;
    		return k % 7;
    	}
    et une autre méthode avec l'objet calendar que j'ai trouvé sur le net :
    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
        public String JourFériéLib(GregorianCalendar G) {
     
            GregorianCalendar Test = new GregorianCalendar(G.get(Calendar.YEAR),G.get(Calendar.MONTH),G.get(Calendar.DAY_OF_MONTH));
            int A = G.get(Calendar.YEAR);   // année de la date examinée
            int T = 0; int T_48 = 0;        // pour calculs intermédiaires
            GregorianCalendar LP;           // contiendra la date du lundi de Pâques
            String TYPEJOUR = "Ordinaire";  // valeur par défaut de la date
     
            // recherche du lundi de Pâques de la date Test
            T = Modulo(((255 - 11 * Modulo(A, 19)) - 21) , 30 ) + 21;
            if (T > 48) {
                T_48 = -1;
            } else {
                T_48 = 0;
            }
     
            LP = new GregorianCalendar(A, 3-1, 2);
            LP.add(Calendar.DAY_OF_YEAR , (T + T_48 + 6 - Modulo((A + A / 4 + T + T_48 + 1) , 7)));
     
            //  valeurs par défaut
            if (Test.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)    {TYPEJOUR = "Samedi";}
            if (Test.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)      {TYPEJOUR = "Dimanche";}
     
            // Jours fériés mobiles
            LP.add(Calendar.DAY_OF_YEAR,-1);
            if (Test.equals(LP))    {TYPEJOUR = "Dimanche de Pâques";}
            LP.add(Calendar.DAY_OF_YEAR,1);
            if (Test.equals(LP))    {TYPEJOUR = "Lundi de Pâques";}
            LP.add(Calendar.DAY_OF_YEAR,38);
            if (Test.equals(LP))    {TYPEJOUR = "Assension";}
            LP.add(Calendar.DAY_OF_YEAR,10);
            if (Test.equals(LP))    {TYPEJOUR = "Dimanche de Pentecôte";}
            LP.add(Calendar.DAY_OF_YEAR,1);
            if (Test.equals(LP))    {TYPEJOUR = "Lundi de Pentecôte";}
     
            // Jours fériés fixes
            if (Test.equals(new GregorianCalendar(A, 0, 1)))    {TYPEJOUR = "Jour de l'an";}
            if (Test.equals(new GregorianCalendar(A, 4, 1)))    {TYPEJOUR = "Fête du travail";}
            if (Test.equals(new GregorianCalendar(A, 4, 8)))    {TYPEJOUR = "8 Mai 45";}
            if (Test.equals(new GregorianCalendar(A, 6, 14)))   {TYPEJOUR = "Fête nationale";}
            if (Test.equals(new GregorianCalendar(A, 7, 15)))   {TYPEJOUR = "15 Août";}
            if (Test.equals(new GregorianCalendar(A, 10, 1)))   {TYPEJOUR = "Toussaint";}
            if (Test.equals(new GregorianCalendar(A, 10, 11)))  {TYPEJOUR = "11 novembre 18";}
            if (Test.equals(new GregorianCalendar(A, 11, 25)))  {TYPEJOUR = "Noël";}
     
     
            return TYPEJOUR;
        }
    Mais c'est méthode ne fonctionne pas correctement sur certains date comme : 20/05/2012, il ne me retourne pas le vrais jour.
    Merci pour votre aide.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    mai 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : mai 2007
    Messages : 15
    Points : 17
    Points
    17
    Par défaut pb résolut
    bonjour tous le monde

    comme un grand j'ai trouver une implémentation de la formule Zeller qui marche bien:

    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
    public class ZellersCongruence {
    	int w;
     
    	String dow;
     
    	String[] dw = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
     
    	public ZellersCongruence(int year, int month, int day) {
    		double y, m, d;
     
    		if (month < 3) { // January or February is
    			month += 12; // month 13 or 14
    			--year; // of the previous year
    		}
     
    		y = (double) year;
    		m = (double) month;
    		d = (double) day;
     
    		w = (int) (y + Math.floor(y / 4) - Math.floor(y / 100)
    				+ Math.floor(y / 400) + Math.floor(2.6 * m + 1.6) + d) % 7;
     
    		dow = dw[w];
    	}
     
    	public ZellersCongruence(String yy, String mm, String dd) {
    		this(Integer.parseInt(yy), Integer.parseInt(mm), Integer.parseInt(dd));
    	}
     
    	String getDayOfTheWeek() {
    		return dow;
    	}
    }
    bonne réception.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2015, 10h59
  2. PHPExcel, Problème avec la formule SERIE.JOUR.OUVRE
    Par edouard.danaradjou dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 05/02/2014, 10h09
  3. Problème avec calcul de nombre de jours ouvrés
    Par pascal27 dans le forum Excel
    Réponses: 4
    Dernier message: 19/09/2011, 13h20
  4. [Dates] Problème de date : jours ouvrés notamment
    Par rob2-9 dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 14h46
  5. [Info] Jours ouvrés entre 2 dates
    Par Dinytro dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 10/08/2005, 17h05

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