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

Java Discussion :

Java - manipuler les dates


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Java - manipuler les dates
    Alors voila mon problème, je vais un logiciel, et une de ces fonctionnalités est de gérer les véhicules, pour ça je représente sous forme d'emploi du temps les heures et journées ou le véhicule est réservé. Tout marche a merveille sauf pour ce ci :

    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
     
     
            c = new GregorianCalendar();
            int month = c2.get(Calendar.MONTH);
            int mont = c.get(Calendar.MONTH);
            int week = c2.get(Calendar.WEEK_OF_YEAR);
            year = c2.get(Calendar.YEAR);
            int yea = c.get(Calendar.YEAR);
     
            int j = c.get(Calendar.DATE);
     
            c2.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            int jourlundi = c2.get(Calendar.DATE);
     
            c2.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
            int jourdimanche = c2.get(Calendar.DATE);
     
            mois2 = month + 1;
     
            gc = (GregorianCalendar) GregorianCalendar.getInstance();
            gc.set(GregorianCalendar.DATE, jourlundi);
            gc.set(GregorianCalendar.MONTH, month);
            gc.set(GregorianCalendar.YEAR, year);
     
            gc2 = (GregorianCalendar) GregorianCalendar.getInstance();
            gc2.set(GregorianCalendar.DATE, jourdimanche);
            gc2.set(GregorianCalendar.MONTH, month);
            gc2.set(GregorianCalendar.YEAR, year);
    c2 correspond aussi a un GregorianCalendar.

    Donc mon problème est que cela fonctionne sauf si je me trouve en fin de mois car par exemple aujourd'hui nous somme le 27 donc le gc.getTime() va donné la date du lundi 25 avril, et le gc2.getTime() lui au lieu de donner la dater du 1 mai il me donne la date du 1 avril.

    Le probleme viens du fais que je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gc2.set(GregorianCalendar.MONTH, month);
    où month correspond au mois en question, mais si je suis entre deux mois cela ne marche pas. 2tant donné que les mois ne contiennent pas le meme nombre de jours je ne peut pas faire un truc du genre :

    "if (jour = 30) {month = month + 1;}"

    Je voudrais donc juste un petit coup de pouce afin de résoudre ce problème.
    Excusez moi pour les fautes d'orthographe. Et merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bon alors j'avance tout doucement et je me suis dit pourquoi ne pas laisser ce code et rajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      if (gc2.getTime().before(gc.getTime())){
                gc2.set(GregorianCalendar.MONTH, month + 1);
            }
    Avec ça, ça fonctionne mais j'ai peur que si mon problème se produit en fin d'année, qu'il me mette un 13eme mois...
    C'est a dire, si je me trouve le 27 décembre et que le dimanche par exemple lui se situe au 1er janvier, il va me mettre "1 / 13 / 2011", donc il faudrait refaire un test en vérifiant si al date est valide en ajoutant 1 au mois si elle ne l'est pas alors passé au mois de janvier et ajouter 1 aux année. Mais je ne sait pas comment fa

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bon alors j'avance tout doucement et je me suis dit pourquoi ne pas laisser ce code et rajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      if (gc2.getTime().before(gc.getTime())){
                gc2.set(GregorianCalendar.MONTH, month + 1);
            }
    Avec ça, ça fonctionne mais j'ai peur que si mon problème se produit en fin d'année, qu'il me mette un 13eme mois...
    C'est a dire, si je me trouve le 27 décembre et que le dimanche par exemple lui se situe au 1er janvier, il va me mettre "1 / 13 / 2011", donc il faudrait refaire un test en vérifiant si al date est valide en ajoutant 1 au mois si elle ne l'est pas alors passé au mois de janvier et ajouter 1 aux année. Mais je ne sait pas comment faire car sur internet j'ai trouvé comment faire a partir d'un format yyyyMMdd ou ddMMyyyy sauf que mon gregoriancalendar n'a pas du tout ce format.

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu souhaites récupérer les dates des lundi et dimanche à partir d'une date donnée.

    Tu peux essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
     
    Calendar aujourdhui = Calendar.getInstance();
     
    Calendar lundi = (Calendar) aujourdhui.clone();
    lundi.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
     
    Calendar dimanche = (Calendar) aujourdhui.clone();
    dimanche.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
     
    System.out.println(sdf.format(lundi.getTime()));
    System.out.println(sdf.format(dimanche.getTime()));
    Bon développement
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Avec ta méthode, si le dimanche se trouve dans le mois suivant ça marche?
    Merci de m'aider

  6. #6
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Il me semble.

    Tu peux tester le code tel quel, tu obtiens bien
    lundi = 25/04/2011
    dimanche = 01/05/2011
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup ça fonctionne, j'ai juste remplacer aujourd'hui par "c" qui est le calendar que j'incremente d'une semaine des que je clique pour arriver a la semaine suivante et tout fonctionne a merveille. Je met donc ce probleme en résolu. Merci Nesmontou

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Juste pour info, le champ Calendar.MONTH ne contient que des valeurs symboliques, de Calendar.JANUARY à Calendar.DECEMBER.
    Ces valeurs symboliques sont de type int, mais ils ne veulent rien dire. Ils vont de 0 à 11. Oui, c'est débile. Il faut utiliser Calendar.JANUARY à Calendar.DECEMBER.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. PHP pour manipuler les dates
    Par esteban0013 dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2011, 13h46
  2. Manipuler les dates et les mois
    Par Imageek dans le forum SQL
    Réponses: 3
    Dernier message: 11/05/2010, 14h01
  3. comment manipuler les dates et les mois
    Par Imageek dans le forum SQL
    Réponses: 2
    Dernier message: 14/04/2010, 16h18
  4. manipuler les dates dans une requete
    Par lenissart dans le forum MySQL
    Réponses: 3
    Dernier message: 28/01/2009, 17h09
  5. Manipuler les dates en Pascal
    Par annoussa dans le forum Pascal
    Réponses: 1
    Dernier message: 07/05/2007, 23h01

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