Samedi déc 01 00:00:00 GMT 2012
Je dois convertir la date ci-dessus au format ci-dessous
2012-12-01
Comment puis-je?
j'ai essayé avec la méthode suivante mais ça ne marche pas
public Date ConvertDate(Date date){
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String s = df.format(date);
String result = s;
try {
date=df.parse(result);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
Utilisez ceci.
Java.util.Date date = new Date("Sat Dec 01 00:00:00 GMT 2012");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String format = formatter.format(date);
System.out.println(format);
vous obtiendrez la sortie comme
2012-12-01
[~ # ~] update [~ # ~] Ma réponse ici est maintenant obsolète. Le projet Joda-Time est maintenant en mode de maintenance, conseillant la migration vers les classes Java.time. Voir la solution moderne dans le réponse de Ole V.V. .
La réponse acceptée par NidhishKrishnan est correcte.
Pour le plaisir, voici le même genre de code dans Joda-Time 2.3.
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
Java.util.Date date = new Date(); // A Date object coming from other code.
// Pass the Java.util.Date object to constructor of Joda-Time DateTime object.
DateTimeZone kolkataTimeZone = DateTimeZone.forID( "Asia/Kolkata" );
DateTime dateTimeInKolkata = new DateTime( date, kolkataTimeZone );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "yyyy-MM-dd");
System.out.println( "dateTimeInKolkata formatted for date: " + formatter.print( dateTimeInKolkata ) );
System.out.println( "dateTimeInKolkata formatted for ISO 8601: " + dateTimeInKolkata );
Quand couru…
dateTimeInKolkata formatted for date: 2013-12-17
dateTimeInKolkata formatted for ISO 8601: 2013-12-17T14:56:46.658+05:30
String s;
Format formatter;
Date date = new Date();
// 2012-12-01
formatter = new SimpleDateFormat("yyyy-MM-dd");
s = formatter.format(date);
System.out.println(s);
Vous ne pouvez pas formater le Date
lui-même. Vous ne pouvez obtenir le résultat formaté que dans String
. Utilisez SimpleDateFormat
comme mentionné par d'autres.
De plus, la plupart des getter methods in Date
sont deprecated.
Réponse moderne: Utilisez LocalDate
de Java.time
, la moderne Java API de date et heure et sa méthode toString
:
LocalDate date = LocalDate.of(2012, Month.DECEMBER, 1); // get from somewhere
String formattedDate = date.toString();
System.out.println(formattedDate);
Cela imprime
2012-12-01
Une date (que nous parlions Java.util.Date
ou Java.time.LocalDate
) n’a pas de format. Tout ce qu’il a, c’est une méthode toString
qui produit un format, et vous ne pouvez pas changer la méthode toString
. Heureusement, LocalDate.toString
_ produit exactement le format que vous avez demandé.
La classe Date
est depuis longtemps obsolète et la classe SimpleDateFormat
que vous avez essayé d'utiliser est notoirement gênante. Je vous recommande d'oublier ces cours et d'utiliser Java.time
au lieu. L'API moderne est tellement plus agréable à utiliser.
Excepté: il arrive que vous obteniez un Date
d’une API existante que vous ne pouvez pas changer ou que vous ne voulez pas changer pour le moment. La meilleure chose à faire est de le convertir en Java.time.Instant
et effectuer d’autres opérations à partir de là:
Date oldfashoinedDate = // get from somewhere
LocalDate date = oldfashoinedDate.toInstant()
.atZone(ZoneId.of("Asia/Beirut"))
.toLocalDate();
Remplacez le fuseau horaire de votre choix s’il ne s’agissait pas d’Asie/Beyrouth. Ensuite, procédez comme ci-dessus.
Lien: tutoriel Oracle: Date Time , expliquant comment utiliser Java.time
.