Exceção de análise de formato de data – “EEE MMM dd HH: mm: ss Z aaaa”

Eu tenho problema com data de exemplo de análise de data:

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

tem exceção

Exatamente eu quero analisar essa data de formato para aaaa-MM-dd Eu tento:

 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: Data Unparseable: “Qua Out 16 00:00:00 CEST 2013”


OK eu mudo para e funciona:

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

Eu vou supor que Locale.getDefault() para você é pl-PL desde que você parece estar na Polônia.

Palavras em inglês em strings de data, portanto, causam uma data não mensurável.

Uma data polonesa apropriada String seria algo como

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

Caso contrário, altere seu Locale para Locale.ENGLISH para que o object SimpleDateFormat possa analisar datas String com palavras em inglês.

Em vez de usar Locale.default que você e outros geralmente não sabem qual padrão, você pode decidir usando locale.ENGLISH porque eu vejo que sua data de string é formatada em inglês. Se você estiver em outros países, o formato será diferente.

Aqui está o meu código de exemplo:

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

O resultado será: date: Wed Oct 16 05:00:00 ICT 2013 . Ou você pode decidir qual parte dessa data será impressa, usando seus campos.

Espero que esta ajuda 🙂

Eu acho que a exceção original é devido a Z no seu formato. Por documentação :

 Z Time zone RFC 822 time zone -0800 

provavelmente você pretendia usar minúsculas z