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 :

Soucis avec SimpleDateFormat


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut Soucis avec SimpleDateFormat
    Voilà j'ai un soucis avec SimpleDateFormat

    Voici le corps de la méthode appelé (je n'ai mis que le passage concerné par mon problème:

    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
        public PT_ListTourney find(Date dateFrom, Date dateTo) {
            PT_ListTourney listTourney = new PT_ListTourney();
            PT_Tourney tourney = null;
     
            if (dateFrom.after(dateTo)) {
                Date temp = dateTo;
                dateTo = dateFrom;
                dateFrom = temp;
            }
            Calendar calFrom = Calendar.getInstance();
            Calendar calTo = Calendar.getInstance();
            calFrom.setTime(dateFrom);
            calTo.setTime(dateTo);
            calFrom.add(Calendar.DATE, -1);
            calTo.add(Calendar.DATE, 1);
            SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
            dateFrom = calFrom.getTime();
            dateTo = calTo.getTime();
            System.out.println("dateFrom: " + dateFrom + " dateTo: " + dateTo);
            String dFrom = sdf.format(dateFrom);
            String dTo = sdf.format(dateTo);
            dFrom = "#" + dFrom + "#";
            dTo = "#" + dTo + "#";
            System.out.println("dFrom: " + dFrom + " dTo: " + dTo);
            try {
    ...            }
     
            } catch (SQLException e) {
                    e.printStackTrace();
            }
           return listTourney;
        }
    et ci-dessous l'extrait du code de test de l'appel à cette méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Calendar calendar = new GregorianCalendar();
            Calendar calendar2 = new GregorianCalendar();
            calendar.add(Calendar.DATE, -1);
            Date dateFrom = calendar.getTime();
            Date dateTo = calendar2.getTime();
            System.out.println("dateFrom: " + dateFrom + " dateTo: " + dateTo + "\n");
            ListTourney listTourney = pt_listTourneyF.find(dateFrom, dateTo);
            System.out.println(listTourney + "\n");
    Voici le résultat de l''exécution de ce code aujourd'hui:

    dateFrom: Tue Apr 20 10:05:18 CEST 2010 dateTo: Wed Apr 21 10:05:18 CEST 2010

    dateFrom: Mon Apr 19 10:05:18 CEST 2010 dateTo: Thu Apr 22 10:05:18 CEST 2010
    dFrom: #19/05/2010# dTo: #22/05/2010#

    alors que je m'attends à recevoir :
    dFrom: #19/04/2010# dTo: #22/04/2010#

    J'ai l'impression d'utiliser correctement les différentes API sur les dates, et je comprends donc pas pourquoi j'ai ce décalage d'un mois dans le résultat.
    Dois je utiliser SimpleDateFormat autrement ? Comment ?

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut
    J'ai refait un test, et là c'est pire...:

    dateFrom: Tue Apr 20 10:44:45 CEST 2010 dateTo: Wed Apr 21 10:44:45 CEST 2010

    dateFrom: Mon Apr 19 10:44:45 CEST 2010 dateTo: Thu Apr 22 10:44:45 CEST 2010
    dFrom: #19/44/2010# dTo: #22/44/2010#

    ... et ce, même en appelant setLenient(false) sur le simpleDateFormat !

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut


    Pour les mois, c'est un M majuscule. Le m minuscule, c'est les minutes. C'est un hasard que tes dates aient été à 5 minutes de l'heure en cours.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 45
    Par défaut


    Effectivement, ça marche ainsi !
    CA m'apprendra à ne pas lire complétement les docs...
    Merci !

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Le problème viens de ton pattern "dd/mm/yyyy". En effet, le "m" minuscule indique les minutes, pour le mois il faut utiliser le "M" majuscule cf la documentation de la classe SimpleDateFormat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    [edit] grillé ^^ [/edit]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

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

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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