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 :

[RegExp] Parser une date


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Par défaut [RegExp] Parser une date
    Bonjour,

    Je souhaiterais parser cette ligne (14/Jul/2005:13:51:34 +0200) avec des expressions régulières.

    J'ai essayé de le faire avec ce code mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String logEntryPattern = "(d{2})/(S+)/(d{4}):(d{2}):(d{2}):(d{2}) (+d)";
    Quelqu'un aurait-il une solution ?

    Merci d'avance pour votre aide.

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

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

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

    Tu peux t'en tirer plus facilement avec la classe java.text.SimpleDateFormat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try {
    	SimpleDateFormat format = new SimpleDateFormat("dd/MMM/yyyy:hh:mm:ss Z", Locale.ENGLISH);
    	String s = "14/Jul/2005:13:51:34 +0200";
     
    	Date date = format.parse(s);
    } catch (ParseException pe) {
    	pe.printStackTrace();
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Par défaut
    Merci beaucoup.

    Je voudrais effectuer des calculs sur l'heure, comment ferais-je avec ce code pour n'extraire que (hh:mm:ss) ?

    merci

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par AI_LINUX Voir le message
    merci beaucoup,
    je voudrai effectuer des calcule sur l'heure, comment frai je avec ce code ?
    n'extraire que (hh:mm:ss)
    merci
    A partir du moment où ton extraction te donne en résultat un objet de type Date, tu peux tout faire.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Par défaut
    mais comment faire pour séparer la date (dd/MMM/yyyy) du temps (hh:mm:ss).

  6. #6
    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
    Citation Envoyé par Robin56 Voir le message
    A partir du moment où ton extraction te donne en résultat un objet de type Date, tu peux tout faire.
    Aaah, c'est pas si simple que ça.
    Le DateFormat va parser la date en GMT+0200 puisque c'est ce qu'elle indique, et générer un objet Date correspondant... Mais cet objet Date sera fourni sans TimeZone, et sans l'info sur le fait que la date écrite était en GMT+0200

    Or, là on veut récupérer l'heure. Est-ce qu'on veut récupérer l'heure de Paris (qui, en l’occurrence, en été, est bien GMT+0200, mais en hiver est GMT+0100) ? (cas #1)
    Ou bien est-ce qu'on veut récupérer l'heure dans la timezone fournie avec la date, et pas forcément dans la nôtre ? (Auquel cas DateFormat a un côté chiant, puisqu'il tient compte de la timezone mais ne nous la communique pas.) (cas #2)

    Dans le cas #1, en effet, quand on a la Date on a tout : pour extraire l'heure il suffit de passer par un Calendar, le régler à la Date parsée, et s'en servir pour demander l'heure, la minute et la seconde séparément.

    Dans le cas #2, il y a plusieurs façons d'aborder le problème en fonction des contraintes, mais c'est toujours un peu chiant.

    Citation Envoyé par AI_LINUX
    mais comment faire pour séparer la date (dd/MMM/yyyy) du temps (hh:mm:ss).
    "Séparer" ? Quelle est la question ?
    Tu ne t'intéresses pas du tout à ce qu'est cette date, tu veux juste réduire la String à ce qui, logiquement, est l'heure dans la String de départ ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    mais comment faire pour séparer la date (dd/MMM/yyyy) du temps (hh:mm:ss).
    Tu reprends la logique du SimpleDateFormat ?
    Et tu en fait deux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy", Locale.ENGLISH);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat formatter = new SimpleDateFormat("hh:mm:ss", Locale.ENGLISH);
    Dans les deux cas tu finis avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String  result = formatter.format(myDate);
    Tutoriel officiel sur SimpleDataFormat

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Parser une date sans depasser jours et mois
    Par zarohn dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 19/11/2010, 21h37
  2. [MySQL] Requete SQL et REGEXP sur une date
    Par luffyfr dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/11/2010, 10h57
  3. parser une date
    Par thierryler dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2009, 22h10
  4. Parser une date
    Par narmataru dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2008, 17h31
  5. Parser une date avec un format
    Par titoine1978 dans le forum C++
    Réponses: 15
    Dernier message: 03/04/2006, 11h46

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