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

API standards et tierces Java Discussion :

formatage de date non pris en compte


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut formatage de date non pris en compte
    salut

    je tente d'obtenir un format de date

    yyyy-mm-dd

    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
    33
    34
    35
    36
     
    import java.sql.Date;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.text.ParseException;
     
    public class dateTest{
    	public static void main(String args[])throws Exception{
    		Calendar cal = new GregorianCalendar();
    		int pYear=1;
    		int pMonth=1;
    		int pDay=1;
    		cal.add(Calendar.MONTH,-12);
    		for (int i=0;i<12;i++){
    			cal.add(Calendar.MONTH,+1);
     
    			pYear = cal.get(Calendar.YEAR);
    			pMonth = cal.get(Calendar.MONTH);
    			pDay = cal.get(Calendar.DATE);
     
    			String strDate = Integer.toString(pYear) + "-" +
    			Integer.toString(pMonth) + "-" + Integer.toString(pDay);
    			SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    			java.util.Date parsedDate = null;
     
    			try {
    				parsedDate = formater.parse(strDate);
    				System.out.println(parsedDate);
    			} catch (ParseException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    mais j'obtiens plutôt


    Sun Nov 27 00:00:00 EST 2005

    au lieux de 2005-11-27

    une idée?

    merci

  2. #2
    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
    L'objet Date ne contient pas d'informations de formattage. Il contient juste les infos temporelles...
    Si tu veux un formattage particulier il te faudra passer par la méthode format(Date d) de la classe SimpleDateFormat

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Par défaut
    Citation Envoyé par sinok
    L'objet Date ne contient pas d'informations de formattage. Il contient juste les infos temporelles...
    Si tu veux un formattage particulier il te faudra passer par la méthode format(Date d) de la classe SimpleDateFormat
    j'utilise déjà SimpleDateFormat

  4. #4
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Oui mais tu affiche l'ojet Date alors que celui n'est PAS altéré par le SimpleDateFormat.

    Comme l'a dit Sinok, il faut utiliser la méthode format(Date d) de SimpleDateFormat dont le principe est de te renvoyer une chaine de caractère représentant la valeur de ton objet Date dans le format que tu as défini dans le SimpleDateFormat. C'est cette chaîne qu'il faut afficher.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Date d = new Date(); //représente la date du jour
    SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); //on défini le SimpleDateFormat qui va bien
    String formattedDate = formater.format(d); //on applique la méthode format de SimpleDateFormat sur la Date, on obtient un objet String
    System.out.println(formattedDate); //on affiche cette String
    Là ça devrait le faire.

    Edit:
    Pour obtenir un objet Date à partir d'un ojet Calendar, tu fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Date d = tonObjetCalendar.getTime();
    Après pour afficher cette Date dans le format que tu veux, tu utilise le SimpleDateFormat comme je te l'ai montré ci dessus.

    C'est quand même beaucoup plus simple que la méthode que tu as employé.

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    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
    public static void main(String args[])throws Exception{
    		Calendar cal = new GregorianCalendar();
    		//int pYear=1;
    		//int pMonth=1;
    		//int pDay=1;
    		cal.add(Calendar.MONTH,-12);
                    // plutot set(Calendar.MONTH,0) non ?
    		for (int i=0;i<12;i++){
    			cal.add(Calendar.MONTH,+1);
                            // à la fin de la boucle plutot. Les mois commencent à 0
     
    			//pYear = cal.get(Calendar.YEAR);
    			//pMonth = cal.get(Calendar.MONTH);
    			//pDay = cal.get(Calendar.DATE);
     
    			//String strDate = Integer.toString(pYear) + "-" +
    			//Integer.toString(pMonth) + "-" + Integer.toString(pDay);
    			SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    			java.util.Date parsedDate = null;
     
    			try {
    				//parsedDate = formater.parse(strDate);
                                    parsedDate = formater.parse(cal.getTime());
    				System.out.println(parsedDate);
    			} catch (ParseException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    tout simplement, non ?

  6. #6
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par in
    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
    public static void main(String args[])throws Exception{
    		Calendar cal = new GregorianCalendar();
    		//int pYear=1;
    		//int pMonth=1;
    		//int pDay=1;
    		cal.add(Calendar.MONTH,-12);
    		for (int i=0;i<12;i++){
    			cal.add(Calendar.MONTH,+1);
     
    			//pYear = cal.get(Calendar.YEAR);
    			//pMonth = cal.get(Calendar.MONTH);
    			//pDay = cal.get(Calendar.DATE);
     
    			//String strDate = Integer.toString(pYear) + "-" +
    			//Integer.toString(pMonth) + "-" + Integer.toString(pDay);
    			SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    			java.util.Date parsedDate = null;
     
    			try {
    				//parsedDate = formater.parse(strDate);
                                    parsedDate = formater.parse(cal.getTime());
    				System.out.println(parsedDate);
    			} catch (ParseException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    tout simplement, non ?
    Non, tu fais la même erreur que lui, à savoir que tu affiche un objet Date ce qui fait que l'affichage ne sera pas formaté.

    Pour être clair :

    La méthode parse(String) permet d'obtenir un objet Date à partir d'une chaîne de caractère formaté comme dans le SimpleDateFormat.

    La méthode format(Date) fait l'inverse, elle renvoie une chaine de caractère représentant la valeur de l'objet Date dans le format défini dans le SimpleDateFormat. Quand on veut avoir un affichage formaté d'une date, on utilise cette méthode.

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

Discussions similaires

  1. [QR 4.05] Propriété imprimante non pris en compte
    Par portu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 30/09/2008, 14h21
  2. [ASE][SQL]WHERE non pris en compte
    Par Benjamin78 dans le forum Sybase
    Réponses: 1
    Dernier message: 24/03/2006, 12h00
  3. Erreur Date non prise en compte
    Par priest69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/02/2006, 23h46
  4. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 10h57
  5. [event] keyListener non pris en compte
    Par pierre.zelb dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/08/2005, 08h35

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