2009-04-23 10 views
6

no puedo entender por qué este par de líneasjava excepción inesperada SimpleDateFormat de análisis

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); 
     } 

    } 

excepciones causa e imprimir

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

... mientras que el tiempo "no se puede analizar" es compatible con el formato cadena que he pasado a SimpleDateFormat() .. ¿Alguna idea?

+0

¿Cuál es su "tiempo" exactamente? –

+0

Imprimí con println() .. time es una Cadena y contiene "Mar 31 de marzo 06:09:00 CEST 2009 " – Emilio

Respuesta

19

que es una cuestión de configuración regional. Use:

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

Sería bueno si el mensaje de excepción no fuera solo "Fecha imposible de escanear" sino también la posición en la Cadena donde falló ... – golimar

-1

Funciona para mí.

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

Solo funciona porque la configuración regional predeterminada coincide con la esperada. – kgiannakakis

+0

es suficiente:) .... –

-1

La 'z' en su formato representa TimeZone y Java solo reconoce ciertos ID de zona horaria. Puede obtener la lista de la clase TimeZone como String Array. CEST no aparece en la lista que acabo de generar de JDK 1.5

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

Espero que esto ayude.

Cuestiones relacionadas