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

Collection et Stream Java Discussion :

Gregorian Calendar - 29 Février


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 96
    Points : 69
    Points
    69
    Par défaut Gregorian Calendar - 29 Février
    Voici le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GregorianCalendar gc = new GregorianCalendar(2007, Calendar.MARCH,1);
     
    // Je veux me positionner au dernier jour du mois précédent.
    gc.add(GregorianCalendar.DAY_OF_YEAR, -1);
     
    System.out.println(gc.getTime());
    Ce code donne comme résultat :
    Mar 01 00:00:00 CET 2007

    Etant donné que que GregorianCalendar gère directement des erreurs connues telles qu'un jour du mois invalide par rapport au calendrier Grégorien, je comprends que ma soustraction de 1 jour au 01/03/08 me donne le jour 29/02/2007 qui n'est donc pas correct.

    Je pensais que GregorianCalendar réalisait la gestion des années bissextiles

    J'ai donc formulé le code suivant pour obtenir un résultat correct.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    GregorianCalendar gc = new GregorianCalendar(2007, Calendar.MARCH,1);
     
    if((gc.get(GregorianCalendar.MONTH)==GregorianCalendar.MARCH) &&
           (!gc.isLeapYear(gc.get(GregorianCalendar.YEAR))))
         {
          gc.add(GregorianCalendar.DAY_OF_YEAR, -2);
         }else{
             gc.add(GregorianCalendar.DAY_OF_YEAR, -1); 
         }
    Ce code donne comme résultat :
    Fev 28 00:00:00 CET 2007

    Avez-vous, pensez-vous à une autre idée, concernant cette gestion d'année bissextile?

    Merci

  2. #2
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Points : 368
    Points
    368
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Calendar calendar = Calendar.getInstance();
     
    calendar.set(2007, 2, 1);
    calendar.add(Calendar.DATE, -1);
    System.out.println(calendar.getTime());
     
    calendar.set(2008, 2, 1);
    calendar.add(Calendar.DATE, -1);
    System.out.println(calendar.getTime());

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 96
    Points : 69
    Points
    69
    Par défaut
    Merci darkxan pour ta réponse,

    J'ai retesté mon code qui finalement fonctionne.

    Mon erreur venait du fait que je le laissais toujours l'année 2008.

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

Discussions similaires

  1. Probleme de gregorian calendar et de jbutton
    Par snips67 dans le forum Langage
    Réponses: 0
    Dernier message: 21/07/2010, 14h32
  2. Date fausse avec Gregorian Calendar
    Par Lolitaaa dans le forum Général Java
    Réponses: 5
    Dernier message: 21/06/2010, 13h25
  3. [Agenda] Gregorian Calendar
    Par MmD_host dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2009, 18h17
  4. Chrono avec Gregorian calendar
    Par pat-trix dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2006, 11h05
  5. Pb de date: 28 ou 29 février?
    Par kayser dans le forum ASP
    Réponses: 5
    Dernier message: 03/12/2003, 09h14

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