En uno de los post, se planteo la pregunta ¿cómo puedo transformar un String a Date? Para hacer más interesante el asunto el valor de la variable String estaba en el siguiente formato año-mes-día. En código se vería algo así:
String strFecha “2007-12-25″;
Con anterioridad conocía la existencia de la clase SimpleDateFormat, que hasta ahora la utilicé para “formatear” la salida de un objeto tipo Date. Cuando se imprime en consola un objeto Date se obtiene: Wed Nov 21 12:27:55 COT 2007, pero mi salida debe ser algo así: 21/11/2007. En código sería así:
Calendar calendario = GregorianCalendar.getInstance();
Date fecha = calendario.getTime();
System.out.println(fecha);
SimpleDateFormat formatoDeFecha = new SimpleDateFormat(“dd/MM/yyyy”);
System.out.println(formatoDeFecha.format(fecha));
El primer System.out.println imprime Wed Nov 21 12:27:55 COT 2007, mientras que el segundo imprime la fecha de acuerdo al formato día/mes/año (21/11/2007) que se especifica como parámetro del constructor de la clase SimpleDateFormat.
Pero la clase SimpleDateFormat no solamente me permite “formatear” objetos tipo Date, sino que me permite crear objetos Date a partir de un String que se encuentra en un formato determinado. Es así cómo se puede hacer.
- Creamos un objeto SimpleDateFormat y el parámetro del constructor será el formato en el que se encuentra la variable tipo String.
- Crear un objeto tipo date, en donde se almacenará la fecha.
- Utilizar el método parse de la clase SimpleDateFormat, tener en cuenta que puede lanzar excepciones.
En código:
SimpleDateFormat formatoDelTexto = new SimpleDateFormat(“yyyy-MM-dd”);
String strFecha = “2007-12-25″;
Date fecha = null;
try {fecha = formatoDelTexto.parse(strFecha);
} catch (ParseException ex) {
ex.printStackTrace();
}
System.out.println(fecha.toString());
Una nota sobre los formatos: si utilizamos una m minúscula estamos diciendo minutos, si utilizamos M mayúscula decimos meses. Aquí pueden encontrar mayores detalles
Powered by ScribeFire.


[...] Barathon Project wrote an interesting post today!.Here’s a quick excerptTransformando String a Date – uso de SimpleDateFormat En uno de los post, se planteo la pregunta ¿cómo puedo transformar un String a Date? Para hacer más interesante el asunto el valor de la variable String estaba en el siguiente formato año-mes-día. En código se vería algo así: String strFecha “2007-12-25″; Con anterioridad conocía la existencia de la clase SimpleDateFormat, que hasta ahora la utilicé para “formatear” la salida de un objeto tipo Date. Cuando se imprime en consola un objet [...]
Por: Dinheiro Internet - Blog de Dinheiro » Transformando String a Date - uso de SimpleDateFormat el Noviembre 21, 2007
a las 5:45 pm
Gracias, esta página me ayudó muchísimo.
Por: Julio el Febrero 19, 2008
a las 11:33 pm
Gracias, es de mucho ayuda para nosotros los novatos
Por: Samuel Alejos el Junio 26, 2008
a las 12:21 pm
si esta muy bien la explicacion , solo q te falto un detalle si tu tienes un formato de fecha dd/MM/YYYY y u string q representa cierta fecha “16/29/2007″ este elemento no genera error, lo q hace es correr el año segun el numero de meses ingresado en el campo . ojo con ese pequeño detalle.
Por: usma el Julio 7, 2008
a las 12:17 pm
Usma. Ese “detalle” se puede cambiar con el método setLenient(boolean arg). Al ponerlo en false fuerza a que la fecha sea válida, en caso contrario tiraría un ParserException. Por default esta en true, permitiendo al parser a tratar de corregir la fecha.
Por cierto que para JavaME DateFormat solo sirve para dar formato a fechas y no para parsear “strings”
Por: fr4gus el Junio 25, 2009
a las 10:03 am
Gracias por el aporte.
Por: plof el Enero 20, 2009
a las 2:28 pm
Gracias por esta pagina me ayudo mucho
Por: christiam el Febrero 2, 2009
a las 3:19 pm
y si quiero obtener la fecha directamente de un JTextField? esque necesito guardar un campo date en una base de datos, pero no se como :S
Por: elmorro el Abril 13, 2009
a las 9:44 pm
Hola, quisiera saber como haria para parsear una fecha con un formato de este tipo “Mon Jun 29 00:04:23 GMT-03:00 2009″
desde ya muchas gracias.
Por: novato el Julio 23, 2009
a las 1:01 pm
“Hola Mundo”
Alguien sabe con usar el “SimpleDateFormat” en J2ME necesito realizar las mismas operaciones de conversión de fecha, pero en J2ME no me permite usar esteta clase. Alguna sugerencia?
Por: Eduardo Romero el Agosto 25, 2009
a las 2:52 pm
Muchas gracias por la información. Me ha sido muy útil.
Por: Said Rodríguez el Agosto 26, 2009
a las 6:37 am
Esto me a ayudado mucho gracias pero ahora solo tenia una duda mas esa fecha q converti a DATE q era String como peudo sumarle un dia si alguien em avisa como es muchas: Gracias
Por: Shadow Warrior el Noviembre 27, 2009
a las 12:53 am
Hola Shadow Warrior,
Te comento que algo me ha ayudado para hacer las sumas es trabajar con las fechas pero expresadas en milisegundos, con un número tipo long, si quiero sumarle 1 día a ese día también lo transforma a milisengundos, suma esos datos y vuelvo a transformarlo en Date y ahí obtengo el resultado. También e visto que el la Clase Calendar tiene un método add, pero no le he usado.
Saludos
Por: Jorge López (jorgaf) el Diciembre 5, 2009
a las 10:10 am