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 :

Formatter une date


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut Formatter une date
    Bonjour,

    J'aimerai via un formulaire (Jtextfield) demander à l'utilisateur une date et la formater pour obtenir le format dd-MM-yyyy HH:mm

    Vous allez me dire SimpleDateFormat mais j'arrive pas à l'utiliser.
    J'aimerai que l'utilisateur puisse saisir
    "12-12-2007" ou "12-12-2007 12:34"
    maintenant j'ai besoin de convertir le deuxieme en ajoutant "00:00" derriere mais ca ne suffit pas.
    j'ai besoin de vérifier que la date existe, je veux pas de 30-02-2007 par exemple.
    je pense que pour ca, il suffit que je joue sur l'exception qui se declenche ou non, mais il y a ptete une methode isDate() propre?


    bref, la premiere partie qui converti "12-12-2007" en "12-12-2007 00:00" ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    static public String toDate(String date) 
        {
            DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm");
            try {
                date = dateFormat.format(date);
            } catch (RuntimeException e) {
                e.printStackTrace();
            }
            return date;
        }
    => java.lang.IllegalArgumentException: Cannot format given Object as a Date

    des conseils, idées?

  2. #2
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    C'est normal, il faudrait passer une "date" à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dateFormat.format(...)
    le mieux c'est de récupérer une Date avec un autre SimpleDateFormat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SimpleDateFormat dateFormat1 = new SimpleDateFormat ("dd-MM-yyyy");
    Tu parses une fois avec celui-là pour obtenir une Date, puis tu formates la Date avec le dateFormat que tu as fait, et ça devrait être bon.

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah tu prends ta chaine tu la passe à la méthode parse de ta SimpleDateFormat. Cette méthode lance une ParseException si la chaine ne correspond pas au format attendu et si la chaine n'est pas une date valide.

    La méthode parse te renvoie un Objet Date que tu pourras utiliser dans un format par la suite.

  4. #4
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Salut,

    J'aimerai que l'utilisateur puisse saisir
    "12-12-2007" ou "12-12-2007 12:34"
    Tu peux faire un JFormattedTextField pour la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DateFormat formatDate  = new SimpleDateFormat("dd-MM-yyyy");
     		tonChampDate = new JFormattedTextField(formatDate);
    et un pour l'heure...

    j'ai besoin de vérifier que la date existe, je veux pas de 30-02-2007 par exemple.
    Tu peux utliser isLenient() pour savoir si la date est valide ou pas sinon par défaut en saisissant 30-02-2007 il te renverra 01-03-2007 ou 02-03-2007 et en mettant lenient à faux il te renvoie une exception....

    la premiere partie qui converti "12-12-2007" en "12-12-2007 00:00" ne marche pas.
    Je pense qu'il faut déjà que tu récupère ta string formaté "12-12-2007" et la transformer en objet date puis rajouter les heures et enfin la transformer en String avec ce format "12-12-2007 00:00", y'a peut etre plus simple mais c'est ce que je ferai....

    Bon courage!!!

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    que de reponses rapides! merci les gars

    pour le premiere point: passer une date à format(). OK mais pourquoi l'autocompletion me propose un format prenant en parametre une chaine de caractère? si la classe n'etait pas surchargée avec un parametre String je ne devrai pas pouvoir compiler.


    pour le second point
    SimpleDateFormat dateFormat1 = new SimpleDateFormat ("dd-MM-yyyy");
    j'ai essayé avec ce pattern et en passant juste la chaine 12-12-2007 => erreur aussi.

    pour le 3eme post.
    au debut j'avais pensé au champ avec filtre et j'avais pas réussi à l'utiliser un champ date et heure me semblent parfaits

    je n'avais pas compris l'utilisation de isLenient() merci bcp.
    je vais essayer tout ca

  6. #6
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    je n'avais pas compris l'utilisation de isLenient() merci bcp.
    Plus d'infos la :

    http://java.sun.com/j2se/1.5.0/docs/.../Calendar.html

    Leniency

    Calendar has two modes for interpreting the calendar fields, lenient and non-lenient. When a Calendar is in lenient mode, it accepts a wider range of calendar field values than it produces. When a Calendar recomputes calendar field values for return by get(), all of the calendar fields are normalized. For example, a lenient GregorianCalendar interprets MONTH == JANUARY, DAY_OF_MONTH == 32 as February 1.

    When a Calendar is in non-lenient mode, it throws an exception if there is any inconsistency in its calendar fields. For example, a GregorianCalendar always produces DAY_OF_MONTH values between 1 and the length of the month. A non-lenient GregorianCalendar throws an exception upon calculating its time or calendar field values if any out-of-range field value has been set.

  7. #7
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    bah le JFormattedTextfield rempli parfaitement sa fonction
    merci

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ou sinon mais un peu en retard, tu as des composants calendriers externes au JDK qui font bien le taf tels que JCalendar ou en le JXDatePicker du projet SwingX

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

Discussions similaires

  1. [MySQL] Formatter une date en fonction du contexte utilisateur
    Par CaviarNAS dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/11/2010, 10h08
  2. Formatter une date
    Par Golzinne dans le forum Silverlight
    Réponses: 10
    Dernier message: 25/01/2010, 16h50
  3. Formatter une date
    Par r0d dans le forum Langage
    Réponses: 5
    Dernier message: 09/02/2007, 14h38
  4. Formatter une date
    Par Thomas_ats dans le forum Langage
    Réponses: 8
    Dernier message: 06/11/2006, 11h43

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