Pourquoi ne peut pas analyser ce SimpleDateFormat cette chaîne de date?
-
25-09-2019 - |
Question
Le SimpleDateFormat:
SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");
L'exception lancée par pdf.parse("Mar 30 2010 5:27:40:140PM");
:
java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"
Toutes les idées?
Edit: Merci pour les réponses rapides. Vous étiez tous corrects, je viens manqué cette phrase clé dans les SimpleDateFormat docs -. Je devrais probablement appeler un jour
La solution
De SimpleDateFormat javadocs :
Mois: Si le nombre de modèle lettres est 3 ou plus, le mois est interprété comme du texte; sinon, il est interprété comme un nombre.
Essayez d'utiliser comme modèle "dd MMM aaaa"
Autres conseils
Tout d'abord, trois mois-char doivent être représentés par MMM
. En second lieu, une à deux heures de chiffres doivent être représentés par h
. Troisièmement, Mar
semble être l'anglais, vous devez fournir un Locale.ENGLISH
, sinon il ne fonctionnera pas correctement dans les machines avec une autre locale par défaut.
Les travaux suivants:
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy h:mm:ss:SSSa", Locale.ENGLISH);
System.out.println(sdf.parse("Mar 30 2010 5:27:40:140PM"));
Résultat (je suis à GMT-4 w / o DST):
Tue Mar 30 17:27:40 BOT 2010
Voir aussi le java.text.SimpleDateFormat
javadoc .
Pourquoi vous l'avez appelé pdf
est au-delà de moi, donc je rebaptisèrent sdf
;)
MM signifie mois numérique. Utilisez MMM.