Cómo analizar la cadena de fecha hasta la fecha?

¿Cómo puedo analizar la cadena de fecha a continuación en un objeto Date ?

 String target = "Thu Sep 28 20:29:30 JST 2000"; DateFormat df = new SimpleDateFormat("E MM dd kk:mm:ss z yyyy"); Date result = df.parse(target); 

Lanza excepción …

 java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000" at java.text.DateFormat.parse(DateFormat.java:337) 

El patrón es incorrecto Tienes una abreviatura de 3 letras por día, por lo que debe ser EEE . Usted tiene una abreviatura de tres letras, por lo que debe ser MMM . Como esas abreviaturas de día y de mes son sensibles a la configuración regional, también le gustaría especificar explícitamente la SimpleDateFormat regional de SimpleDateFormat en inglés, de lo contrario, utilizará la configuración regional predeterminada de la plataforma que puede no ser en sí misma inglesa.

 public static void main(String[] args) throws Exception { String target = "Thu Sep 28 20:29:30 JST 2000"; DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH); Date result = df.parse(target); System.out.println(result); } 

Esto se imprime aquí

  Jue 28 Sep 07:29:30 BOT 2000 

que es correcto según mi zona horaria.

También lo reconsideraría si no quisiera usar HH lugar de kk . Lea el javadoc para obtener detalles sobre patrones válidos.

Aquí hay un ejemplo de trabajo:

 import java.text.ParseException; import java.text.SimpleDateFormat; import java.text.DateFormat; import java.util.Date; public class j4496359 { public static void main(String[] args) { try { String target = "Thu Sep 28 20:29:30 JST 2000"; DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss zzz yyyy"); Date result = df.parse(target); System.out.println(result); } catch (ParseException pe) { pe.printStackTrace(); } } } 

Se imprimirá:

 Thu Sep 28 13:29:30 CEST 2000 
 String target = "27-09-1991 20:29:30"; DateFormat df = new SimpleDateFormat("dd MM yyyy HH:mm:ss"); Date result = df.parse(target); System.out.println(result); 

Esto funciona bien?

 new SimpleDateFormat("EEE MMM dd kk:mm:ss ZZZ yyyy"); 

y

 new SimpleDateFormat("EEE MMM dd kk:mm:ss Z yyyy"); 

todavía corre Sin embargo, si su código arroja una excepción, es porque su herramienta o jdk o cualquier otra razón. Porque tengo el mismo error en mi IDE, pero compruebe estos http://ideone.com/Y2cRr (ide en línea) con ZZZ y con Z

La salida es: Thu Sep 28 11:29:30 GMT 2000

Tuve este problema y configuré la configuración Locale en US . US , Luego funciona.

 static DateFormat visitTimeFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US); 

para String "Sun Jul 08 00:06:30 UTC 2012"

Una excepción de análisis es una excepción comprobada, por lo que debe atraparla con un try-catch cuando trabaje con el análisis de cadenas a fechas, como @miku sugirió …