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 :

Récupérer une date depuis un string


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut Récupérer une date depuis un string
    Bonjour,
    Comme il est dit dans le titre lorsque je parcours une liste de String, j'aimerais qu'il détecte le String qui contient la date pour pouvoir le "parse" en object de la classe Date.
    J'ai mis une image pour mieux comprendre. Le soucis c'est que parmi m'a liste de String que je parcours il n'y pas que des dates, il y a également des description. J'espère avoir était claire. J'ai essayé en utilisant un SimpleDateFormat
    mais il me renvoit des exception.
    Voici mon code pour le moment :

    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
                    for (String context : split) {
     
                        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
                        if (formatter.toPattern() != null) {
                            try {
                                Date parseDateFormat = formatter.parse(context);
                               // System.out.println("parse = " + parseDateFormat);
                            } catch (ParseException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
     
                        System.out.println("monString = " + context);
                    }

    L'image de ce que que contient ma liste de String :
    Nom : explorer.png
Affichages : 228
Taille : 2,3 Ko

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Malheureusement, le seul moyen de vérifier qu'une String contient une date au format compatible avec ton SimpleDateFormat est de la parser (ou de refaire une classe qui fonctionne exactement pareil que SimpleDateFormat, donc réinventer la poudre, et c'est loin d'être simple).

    Pourquoi ne pas exploiter simplement l'exception justement, comme indication que ce n'est pas une date ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    Effectivement ça peut le faire grâce à l’exception. Mais j'avoue ne pas trop savoir comment m'y prendre

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    catch (ParseException e) {
                                if (e != null) {
                                    System.out.println("It's not a Date");
                                }
                                // e.printStackTrace();
                            }
    Est-ce que faire du code dans le catch comme cela ne prends plus de temps de traitement ? (Ce n'est pas le problème c'est pour ma culture).

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Par exemple :

    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
     
    /**...**/
    for (String context : split) {
     
                        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
                        if (formatter.toPattern() != null) {
                            try {
                                Date parseDateFormat = formatter.parse(context);
                               traiter( pârseDateFormat );
                            } catch (ParseException e) {
                                traiter( context );
                            }
                        }
     
     
                    }
    /**...**/
     
    private void traiter(Date date) {
       /**...**/
     
    }
     
    private void traiter(String string) {
       /**...**/
     
    }

    Il faudrait savoir spécifiquement le détail de ce que tu veux faire pour savoir comment établir l'implémentation exacte. On peut vouloir obtenir toutes les données par exemple dans une liste à la fin du traitement : on pourra utiliser un wrapper abstrait paramétrable public abstract class AbstractWrapper<T> {, faire une List<AbstractWrapper<?>> pour stocker les valeurs des deux wrappers concrets, un pour Date, un pour String.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kewty Voir le message
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    catch (ParseException e) {
                                if (e != null) {
                                    System.out.println("It's not a Date");
                                }
                                // e.printStackTrace();
                            }
    Est-ce que faire du code dans le catch comme cela ne prends plus de temps de traitement ? (Ce n'est pas le problème c'est pour ma culture).
    Qu'est-ce qui prendra plus de temps que quoi ? Si context n'est pas une date, ça prendra le temps de traitement de ce qu'il y a dans le bloc du catch, et le temps du catch, en plus du temps de tentative du parsing. Si le contexte est une date, ça ne prendra le temps du parsing et le cactch ne sera pas exécuté.


    Par ailleurs, ce n'est pas la peine de tester la nullité de e, si on entre dans le bloc du catch, c'est que l'exception est soulevée.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    Je vois c'est bon j'ai réussi à faire ce que je voulais. Voici le code que j'ai fait pour pouvoir stocker dans des variables la Date et le String dans des variables différentes (Ces variables sont en paramètre de la méthode) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                            Date parseDateFormat = formatter.parse(monString);
                            if (parseDateFormat != null) {
                                parseDate = parseDateFormat;
                            }
                            // System.out.println("parse = " + parseDate );
                        } catch (ParseException e) {
                            if (e != null) {
     
                                maVariableString= monString;
                            }
                            // e.printStackTrace();
                        }
    Par ailleurs, ce n'est pas la peine de tester la nullité de e, si on entre dans le bloc du catch, c'est que l'exception est soulevée.
    C'est vrai c'est stupide de m'a part !

    Je reviendrais si nécéssaire. Merci beaucoup pour l'aide !

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kewty Voir le message
    (Ces variables sont en paramètre de la méthode) :
    Quoique tu veuilles faire ça ne sert à rien, ou ça ne fonctionnera pas : les paramètres sont passés par copie.

    si tu as écrit public void taMethode(Date parseDate, String maVariableString), tu ne pourras pas récupérer les valeurs dans l'appelant. Donc, tu peux aussi bien écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void taMethode() {
    Date parseDate=null;
    String maVariableString=null;
    /*...*/
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 39
    Points : 50
    Points
    50
    Par défaut
    Il faudrait savoir spécifiquement le détail de ce que tu veux faire pour savoir comment établir l'implémentation exacte. On peut vouloir obtenir toutes les données par exemple dans une liste à la fin du traitement : on pourra utiliser un wrapper abstrait paramétrable public abstract class AbstractWrapper<T> {, faire une List<AbstractWrapper<?>> pour stocker les valeurs des deux wrappers concrets, un pour Date, un pour String.
    Exact ! Faut que je l'ai stock dans une liste comme tu as pu le dire précédemment. Je vais essayé de faire ça.
    Merci !

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

Discussions similaires

  1. Formater date depuis un String issue d'une jsp
    Par informatica1989 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 02/11/2012, 13h36
  2. Récupérer une date au sein d'un String Java
    Par devhercule dans le forum Langage
    Réponses: 9
    Dernier message: 06/07/2012, 17h54
  3. Récupérer une date depuis une page ASP dans une BDD
    Par franckrichard57 dans le forum ASP
    Réponses: 2
    Dernier message: 22/03/2007, 11h31
  4. Comment récuperer une date depuis une chaine?
    Par shopoto dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 16h17
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 10h52

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