Excepción de análisis de formato de fecha: “EEE MMM dd HH: mm: ss Z aaaa”

Tengo un problema con la fecha de ejemplo de análisis de fecha:

SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault()); parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); 

tiene excepción

Exactamente, quiero analizar esta fecha de formato a aaaa-MM-dd. Intento:

 SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); 

take: java.text.ParseException: fecha imposible de leer: “Wed oct 16 00:00:00 CEST 2013”


OK, me cambio y trabajo:

 SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); 

Voy a suponer que Locale.getDefault() para ti es pl-PL ya que pareces estar en Polonia.

Por lo tanto, las palabras en inglés en las cadenas de fechas causan una fecha indescomible.

Una String fecha polaca apropiada sería algo así como

 "Wt paź 16 00:00:00 -0500 2013" 

De lo contrario, cambie su Locale.ENGLISH Locale a Locale.ENGLISH para que el objeto SimpleDateFormat pueda analizar las fechas de String con palabras en inglés.

En lugar de utilizar Locale.default que usted y los demás a menudo no sepan cuál es el predeterminado, puede decidir usando locale.ENGLISH porque veo que la fecha de su cadena es el formato en inglés. Si se encuentra en otros países, el formato será diferente.

Aquí está mi código de ejemplo:

 public static void main(String[] args) { try { SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); System.out.println("date: " + date.toString()); } catch (ParseException ex) { ex.printStackTrace(); } } 

El resultado será: date: Wed Oct 16 05:00:00 ICT 2013 . O bien, puede decidir qué parte de esta fecha se imprimirá utilizando sus campos.

Espero que esto ayude 🙂

Creo que la Excepción original se debe a Z en su formato. Por documentación :

 Z Time zone RFC 822 time zone -0800 

lo más probable es que quisiste usar minúsculas z