2012-11-26 4 views
3

J'essaye d'analyser des dates qui apparaissent dans le format "01-26-2012 03:07 AM".ParseException inexpliquée pour SimpleDateFormat

J'ai créé ce SimpleDateFormat:

private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a"); 

Pourtant, chaque fois que je parse les éléments suivants:

String date = "01-26-2012 03:07 AM"; 
Date myDate = DATE_FORMAT.parse(date.trim()); 

Je reçois un ParseException:

java.text.ParseException: Date Unparseable : "01-26-2012 03:07 AM" at java.text.DateFormat.parse (DateFormat.java : 337)

Est-ce que ma chaîne SimpleDateFormat est correcte? Y a-t-il autre chose qui pourrait l'empêcher d'analyser?

Répondre

3

Il s'agit probablement d'un problème lié aux paramètres régionaux. Si vous essayez avec des paramètres régionaux anglais par exemple, il devrait fonctionner:

DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH); 

Puisque vous ne spécifiez pas un lieu, la valeur par défaut un pour votre système est utilisé, et le « AM » pourrait ne pas être analysé correctement.

Le code ci-dessous sorties

myDate = Jeu 26 03:07:00 GMT Jan 2012

public static void main(String[] args) throws Exception { 
    String date = "01-26-2012 03:07 AM"; 
    DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH); 
    Date myDate = DATE_FORMAT.parse(date.trim()); 
    System.out.println("myDate = " + myDate); 
} 

Comme une note de côté, si vous modifiez le code à Locale.CHINESE par exemple, vous obtiendrez une exception d'analyse.

+0

Merci, je viens d'essayer avec Locale.ENGLISH, Locale.US, et quelques autres locales. Toujours avoir le même problème cependant :( – user1854772

+0

Cela fonctionne pour moi - J'ai posté un exemple de travail complet pour référence - peut-être que vous pourriez l'essayer pour confirmer que cela ne fonctionne pas.Quelle version de Java utilisez-vous? – assylias

+0

J'utilise Java 1.6.0_33 J'ai copié l'exemple dans votre commentaire, ça ne marche toujours pas – user1854772

0

Il est incorrect d'utiliser SimpleDateFormat comme objet statique car il n'est PAS thread safe. Je ne peux pas dire que c'est le problème ici, mais pourrait être un pointeur.

Questions connexes