J'ai eu un problème avec la date de l'exemple d'analyse de date:
SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault());
parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
a obtenu une exception
Exactement, je veux analyser cette date de format en aaaa-MM-jj J'essaie:
SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
prendre: Java.text.ParseException: date non comparable: "mer 16 oct 00:00:00 CEST 2013"
OK je change et travaille:
SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
Je vais supposer que Locale.getDefault()
pour vous est pl-PL
puisque vous semblez être en Pologne.
Les mots anglais dans les chaînes de date provoquent donc une date impossible à analyser.
Une date polonaise appropriée String
serait quelque chose comme
"Wt paź 16 00:00:00 -0500 2013"
Sinon, changez votre Locale
en Locale.ENGLISH
pour que l'objet SimpleDateFormat
puisse analyser les dates String
avec des mots anglais.
À la place d'utiliser Locale.default
que vous et les autres ne savez souvent pas quelle valeur par défaut, vous pouvez décider en utilisant locale.ENGLISH
car je vois que la date de votre chaîne est au format anglais. Si vous êtes dans d'autres pays, le format sera différent.
Voici mon exemple de code:
public static void main(String[] args) {
try {
SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
System.out.println("date: " + date.toString());
} catch (ParseException ex) {
ex.printStackTrace();
}
}
Le résultat sera: date: Wed Oct 16 05:00:00 ICT 2013
. Ou vous pouvez décider quelle partie de cette date sera imprimée, en utilisant ses champs.
J'espère que cette aide :)
Je pense que l'exception d'origine est due à Z
dans votre format. Par documentation :
Z Time zone RFC 822 time zone -0800
vous souhaitiez probablement utiliser des minuscules z