2010-08-15 6 views
1

Bonjour j'ai besoin pour analyser cette chaîneComment analyser la date de suivi en Java?

Sun, 15 août 2010 15:50 CEST

J'utilise SimpleDataFormat de cette façon

String date = "Sun, 15 Aug 2010 3:50 pm CEST"; 
DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy h:mm a Z"); 
Date d = formatter.parse(date); 

mais il jette une exception.

Pouvez-vous m'aider s'il vous plaît?

Merci

+6

Ma boule de cristal ne fonctionne pas .. pouvez-vous s'il vous plaît nous dire quelle exception êtes-vous? – npinti

Répondre

4

SimpleDateFormat est sensible au Locale qui est actuellement défini. Il se peut donc qu'il y ait un problème en essayant d'analyser le format avec celui en cours. Avec votre constructeur, il utilise Locale.getDefault() pour déterminer le paramètre.

Vous pouvez essayer de créer le DateFormat explicitement en utilisant le Locale.US via new SimpleDateFormat(pattern, Locale.US) et de vérifier si le problème existe également dans ce cas.

1

Ce code:

try { 
    String date = "Sun, 15 Aug 2010 3:50 pm CEST"; 
    DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy h:mm a Z"); 
    Date d = formatter.parse(date); 
    System.out.println(formatter.format(d)); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

prints (sans exception):

Sun, 15 Aug 2010 3:50 PM +0200 

donc je suppose que quelque chose d'autre est votre problème ... Quelle est l'exception que vous obtenez ?

0

Mon code est

try { 
    DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy h:mm a Z", Locale.US); 
    Date d = df.parse(date); 
    bean.setDate(d); 
} 
catch (Exception e) 
{ 
    Logger.error("Error while parsing data"); 
} 

et exception est

java.text.ParseException: Unparseable date: Mon, 16 Aug 2010 2:20 pm CEST 

Merci

+0

Je ne peux pas reproduire votre problème. Fonctionne bien pour moi sur JDK 1.5.0_14. Et votre contribution équivaut à "Mon, 16 août 2010 14:20 CEST" sans espaces blancs/caractères supplémentaires? –

1

Je l'ai résolu de cette manière

try { 
DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy h:mm a", Locale.US); 
Date d = df.parse(date); 
bean.setDate(d); 

} catch (Exception e) { Logger.error ("Erreur lors de l'analyse des données"); }

Supprimer Z du motif et utiliser Locale.US.

Merci