Analyser une Chaîne de Date en Java
Je suis en train d'analyser une chaîne à une date, c'est ce que j'ai:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
Date date = new Date();
try {
date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
la chaîne à analyser est ceci:
Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)
J'ai suivi le http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Assez sûr que je l'ai fait tout par le livre. Mais il me donne ParseException
.
java.text.ParseException: Unparseable date:
"Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)"
Ce que je fais mal? Les modèles que j'Ai essayé:
EEE MMM dd yyyy HH:mm:ss zzz
EEE MMM dd yyyy HH:mm:ss zZ (zzzz)
- Je pense qu'il devrait être
"... zz (zzzz)
, vous avez capitalisé uneZ
. - le problème reste encore malheureusement
- Here il est 😀 je pense que l'on couvre ce dont vous avez besoin 😀
- D'où vient le
time
Chaîne vient?
Vous devez vous connecter pour publier un commentaire.
Vous semblent être un mélange des modèles pour
z
etZ
. Si vous ignorez la(FLE Daylight Time)
, puisque c'est la même info que dansGMT+0300
, le problème est queSimpleDateFormat
veutGMT +0300
ouGMT+03:00
. La dernière variante peut être analysée comme ceci:[MODIFIER]
À la lumière des autres postes sur leurs chaines de temps de travail, c'est probablement parce que votre temps de chaîne contient des informations contradictoires, ou des formats mixtes.
:
à votre chaîne de temps pour que cela fonctionne.EEE MMM dd yyyy HH:mm:ss zzz
, et quand je l'imprimer : Date date = new date(); ` , et de montrer ensuite le format :System.out.println(sdf.format(date));
, il imprime :Thu Jul 12 2012 10:47:09 EEST
time = time.substring(0, 31) + ":" + time.substring(31);
. semble très bizarre, pas de moyen plus facile lol?time
Chaîne à l'aide des formats mixtes malheureusement dans une manière qui entraîne des problèmes pourSimpleDateFormat
, donc si vous avez la possibilité de générer plus facile, ce serait certainement aider.time = time.substring(0, 21);
Essayer de cette façon..
Sortie j'ai eu:
N Juuli 12 2012 10:19:35 EEST+0300 (Eastern European Summer Time)
SimpleDateFormat(String pattern, Locale.US)
Vous pouvez essayer d'imprimer la chaîne de format de date :
N Juuli 12 2012 10:18 EEST+0300 (Eastern European Summer Time)
Si vous avez des problèmes avec les paramètres régionaux, vous pouvez définir les paramètres Régionaux par défaut pour l'ensemble de l'application
ou tout simplement utiliser les paramètres régionaux anglais sur votre
SimpleDateFormat
Vous pouvez également utiliser
Locale.US
ouLocale.UK
.