Archivo del sitio

Unparseable Date ParseException (String to Date)

Hace unos minutos tuve un pequeño problema con unos parseo de String a fecha, y googleando unos cuantos minutos me di cuenta que muchos tenían el mismo drama, hasta que encontre la solución leyendo unos ejemplos muy completos.

http://www.herongyang.com/JDK/Date-String-java-util-SimpleDateFormat-Parse-to-Object.html

Para que no se den la molestia de leer todo eso xD , les traigo aqui una solución simple.

Cuando queremos parsear un String a un Date tenemos que usar un objeto de la clase SimpleDateFormat  donde se setea una Mascara o un Pattern como quieran llamarlo. Es la estructura de una fecha como “yyyy/MM/dd” por ejemplo. Para parsear un String a Date debemos tener exactamente el mismo pattern del String que queremos transformar a fecha.

Para hacerlo mas claro aqui tenemos un ejemplo:

Quería transformar el siguiente String a Date

String fec = "Fri Apr 08 00:00:00 CLT 2011";

Intentaba hacerlo de esta forma


SimpleDateFormat formatoDelTexto = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH);
 String fec = "Fri Apr 08 00:00:00 CLT 2011";

 Date nuevo = (Date) formatoDelTexto.parse(fec);

Que me salia en ese momento

“Exception in thread “main” java.text.ParseException: Unparseable date: “Fri Apr 08 00:00:00 CLT 2011″
at java.text.DateFormat.parse(DateFormat.java:337)
at test.Test.main(Test.java:46)”

Para solucionar este drama debemos elegir el pattern exacto del string que queremos parsear.


SimpleDateFormat formatoDelTexto = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.ENGLISH);
String fec = "Fri Apr 08 00:00:00 CLT 2011";
Date nuevo = (Date) formatoDelTexto.parse(fec);

Y listo nos creara el objeto date a partir del String sin problemas, ahora si queremos cambiar el formato del Date, basta con aplicar el format del SimpleDateFormat a nuestra manera. Por ejemplo queremos que esa fecha se imprima asi 2012/06/06


SimpleDateFormat otroFormato = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH);
 System.out.println("FEcha : \n" + otroFormato.format(nuevo));

Y eso es todo.

Cualquier duda a los comentarios.

Anuncios
A %d blogueros les gusta esto: