57 votes

afficher Java.util.Date dans un format spécifique

J'ai le scénario suivant :

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.parse("31/05/2011"));

donne une sortie

Tue May 31 00:00:00 SGT 2011

mais je veux que la sortie soit

31/05/2011 

J'ai besoin d'utiliser parse ici parce que les dates doivent être triées comme des dates et non comme des chaînes.

Des idées ?

8 votes

Peut-on ajouter une entrée ou un article Wiki/FAQ pour l'analyse/le formatage des dates et des fuseaux horaires ? Il semble qu'une question Java sur cinq porte sur ce sujet...

2 votes

Pour les retardataires : n'utilisez pas Date et n'utilisez certainement pas SimpleDateFormat . Utilisez LocalDate y DateTimeFormatter de java.time, l'API moderne de date et d'heure de Java . Pour tous : Vous demandez l'impossible. A Date n'a pas de format, et vous ne pouvez pas modifier la façon dont son toString fonctionne (il en va de même pour la méthode moderne LocalDate )..

73voto

Luciano Fiandesio Points 4795

Pourquoi pas :

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")));

> 31/05/2011

9 votes

Je ne sais pas pourquoi cette réponse est acceptée. Mais elle ne donne pas la date formatée de type java.uti.Date. La méthode format () retourne String.

3 votes

@RadhakrishnaGorenta, je ne suis pas sûr de ce que vous voulez dire par là. Il n'existe pas de "date formatée de type java.uti.Date". Les dates n'ont pas de "formats" tant qu'elles ne sont pas affichées à l'écran ou sérialisées. Elles sont simplement des objets.

0 votes

Comment cela résout-il la question de la "conversion d'une util.Date a sql.Date objet ?

55voto

aioobe Points 158466

Vous devez passer par SimpleDateFormat.format afin de formater la date sous forme de chaîne.

Voici un exemple qui va de String -> Date -> String .

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("31/05/2011");

System.out.println(dateFormat.format(date));   // prints 31/05/2011
//                            ^^^^^^

17voto

BadSkillz Points 1161

Utilisez le format SimpleDateFormat.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);

4voto

bugs_ Points 1407

Ça n'a aucun sens, mais :

System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")))

SimpleDateFormat.parse() = // parse Date from String
SimpleDateFormat.format() = // format Date into String

1voto

MByD Points 78505

Vous l'avez déjà (c'est ce que vous avez saisi) parse analysera une date dans un format donné et imprimera l'objet date complet ( toString ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X