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 :

Probleme de parsing de date


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 65
    Par défaut Probleme de parsing de date
    Bonjour,

    (sujet venant de général JAVA)

    Voici mon probleme, dans un chaine nous pouvons recolter des dates dans différents format. J'avais trouvé une astuce afin de pouvoir lire la date sans entrer dans des tests infâmes !

    voici mon astuce :
    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
     
      String datePattern[] = {
          "yyyy-MM",
          "yyyy:MM",
          "yyyyMM"
      };
     
      public void run(){
        String stgDate = "2002-05";
        for(int idx = 0; idx<datePattern.length; idx++){
          try{
            DateFormat dateFormat = new SimpleDateFormat(datePattern[idx]);
            System.out.println(datePattern[idx] + " = " + dateFormat.parse(stgDate));
          }catch (Exception e){
            System.out.println("catch for " + datePattern[idx]);
          }
        }
      }
    Mais là, surprise, quand stgDate = '2002-05', le programme me sort juillet 2001 pour le pattern "YYYYMM" !!!!!
    Il a interprété ma chaise comme une chaine arithmétique !!! (2002/01 - 5 = 2001/07)

    Marrant mais un peu génant, comment faire pour que le SimpleDateFormat ne force pas "le calcul" de la chaine ?

    Merci de votre aide.

    Cordialement

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    a la rigueur tu peux faire une methode qui revera la première date touvée (et en dernier cas celle utilisant le pattern "yyyyMM"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      public Date getDate(String stgDate);
        for(int idx = 0; idx<datePattern.length; idx++){
            java.text.ParsePosition pos = new java.text.ParsePosition(0);
            java.text.DateFormat dateFormat = new java.text.SimpleDateFormat(datePattern[idx]);
            java.util.Date date = dateFormat.parse(stgDate,pos);
            if(pos.getIndex() == stgDate.length()) {
                return date; 
            }
        }
      }

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tout simplement avec setLenient() qui permet d'utiliser le DateFormat de manière stricte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dateFormat.setLenient(false);
    a++

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 65
    Par défaut
    Merci.

    Je pense que cela serai une bonne astuce à mettre dans la FAQ car je ne dois pas être le seul à buter sur ce genre de probleme simple.

    Je tag.

    Cordialement

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

Discussions similaires

  1. Probleme de parsing de chaine, tronquer une chaine
    Par Voodo'o_d'ool dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/08/2008, 11h28
  2. Probleme de conversion String -> Date avec SimpleDateFormat.parse(String)
    Par jeanlouis_lecodeur dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/07/2007, 09h18
  3. [JDOM] probleme de Parse
    Par seb_fou dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 18/05/2005, 16h27
  4. Probleme avec affichage de date
    Par Wongmaster dans le forum Access
    Réponses: 27
    Dernier message: 24/12/2004, 20h51
  5. [VB6] Problème d'addition de dates et de nombres
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/11/2002, 21h12

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