Posteado por: Jorge López (jorgaf) | noviembre 21, 2007

Transformando 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 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.

  1. Creamos un objeto SimpleDateFormat y el parámetro del constructor será el formato en el que se encuentra la variable tipo String.
  2. Crear un objeto tipo date, en donde se almacenará la fecha.
  3. 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.

About these ads

Respuestas

  1. [...] 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 [...]

  2. Gracias, esta página me ayudó muchísimo.

    • julio tonto

      • Anda que tu xD

  3. Gracias, es de mucho ayuda para nosotros los novatos

  4. 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.

    • 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”

  5. Gracias por el aporte.

  6. Gracias por esta pagina me ayudo mucho

  7. 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

  8. 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.

  9. “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?

  10. Muchas gracias por la información. Me ha sido muy útil.

  11. 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

    • 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

  12. Muchisimas gracias!! súper útil

  13. Tengo un problema para convertir un string a un date de formato (yyyy-MM-dd HH:mm:ss.SSS).

    Me bota error y mi variable date sigue en valor null

  14. [...] Más info en Transformando un String a Date. Uso de SimpleDateFormat [...]

  15. Muchas gracias, aprendí mucho del post y de los comments.

  16. Excelente artículo, de gran ayuda

  17. Hola muchas gracias por el post, quisiera saber como hago para validar si una fecha es mayor que otra por ejemplo if (fecha < fecha1) { etc….

  18. Hola,
    Tengo dos problemas y al exponerlos, me seria de mucha ayuda su pronta respuesta,
    1.el compilador me dice que hay una ambiguedad, con el Date de la clase sql y con el Date de la clase Util
    reference to Date is ambiguous, both class java.sql.Date in java.sql and class java.util.Date in java.util match
    2.No puedo usar el SimpleDateFormat, creo que es por no importar una libreria, pero no estoy seguro
    gracias

  19. gracias me ha servido para modulo de almacen:::estoy muy agradecido

  20. hola amigo soy algo nuevo en esto de programacion estoy haciendo un aplicacion de escritorio donde muestra hora y feche asta ahora solo he logrado que me muestre la hora bueno lo que quiero es que me muestre la fecha en un formato asi: 18/08/2011 pero me gustaria que la fecha se mueste en un Jlabel

    gracias saludos

    • Hola Ezau, bueno la verdad es q ahora existe un componente el swing llamado FormattedTextField que extiende de JTextField , con este componente podrás darle formato tanto a fechas como a números ya trae algunos formatos genéricos pero también puedes darles tus propios formatos.

  21. [...] sacado de ScribeFire y que me fue muy útil. This entry was posted in Java and tagged Java by bparientem. [...]

  22. Soy estudiante de DAM1,esta página me ha ayudado mucho,gracias :)

  23. Muchas gracias! Siempre me salva de apuro!


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 104 seguidores

%d bloggers like this: