2009-04-23 7 views
6

Je ne comprends pas pourquoi ces quelques lignesjava inattendue SimpleDateFormat Parse exception

Date submissionT; 
    SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); 

    public time_print(String time) { 
     try { 
      submissionT=tempDate.parse(time); 
     } 
     catch (Exception e) {  
      System.out.println(e.toString() + ", " + time); 
     } 

    } 

exceptions Cause et imprimer

java.text.ParseException: Unparseable date: "Tue Mar 31 06:09:00 CEST 2009", Tue Mar 31 06:09:00 CEST 2009 

... alors que le temps "non analysable" est conforme au format chaîne que j'ai passé à SimpleDateFormat() .. Une idée?

+0

Quelle est exactement votre 'heure'? –

+0

J'ai imprimé avec println() .. le temps est une chaîne et contient "Tue Mar 31 06:09:00 CEST 2009 " – Emilio

Répondre

19

Il est une question de paramètres régionaux. Utilisation:

sdf = SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", Locale.US); 
+0

Serait gentil si le message d'exception n'était pas seulement "Date non réparable" mais aussi la position dans la chaîne où il a échoué ... – golimar

-1

Fonctionne pour moi.

public class Main { 

public static void main(String[] args) 
{ 
    time_print("Tue Mar 31 06:09:00 CEST 2009"); 
} 

static Date submissionT; 
static SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); 

public static void time_print(String time) { 
    try { 
     submissionT=tempDate.parse(time); 
     System.out.println(submissionT); 
    } 
    catch (Exception e) { 
     System.out.println(e.toString() + ", " + time); 
    } 

} 

}

+5

Cela fonctionne uniquement en raison de votre Locale par défaut correspond à celui attendu. – kgiannakakis

+0

assez juste:) .... –

-1

Le 'z' dans le format représente TimeZone et Java ne reconnaît que certains fuseau horaire ID de. Vous pouvez extraire la liste de la classe TimeZone en tant que groupe de chaînes. CEST ne figure pas dans la liste que je viens de JDK généré 1,5

String[] aZones = TimeZone.getAvailableIDs(); 
    for (int i = 0; i < aZones.length; i++) { 
     String string = aZones[i]; 
     System.out.println(string); 
    } 

Hope this helps.