miércoles, 22 de abril de 2009

Convertir Date a String (y String a Date)

Java almacena las fechas en un objeto llamado java.util.Date. Si se imprime o se usa como cadena, el resultado no es nada agradable ya que no se entiende: Sat Mar 27 00:00:00 COT 1976

Pues bien, existe una clase llamada java.text.DateFormat que permite convertir de Date a String (bajo un formato en especial) y visceversa (también usando el mismo formato).

Aquí dejo un pequeño código (adaptado del libro de certificación SCJP 5.0 de Katty Sierra - Página 464) donde se muestra los diferentes formatos que maneja la clase java.text.DateFormat. Si necesitas convertir una cadena (String) a Date, primero prueba este código, analízalo y luego piensa cómo lo puedes usar.
import java.text.DateFormat;

import java.text.ParseException;
import java.util.Date;

public class Main {

    public static void main(String[] args) {
        Date fecha = new Date();
        DateFormat dfDefault = DateFormat.getInstance();
        DateFormat dfDateInstance = DateFormat.getDateInstance();
        DateFormat dfDateShort = DateFormat.getDateInstance(DateFormat.SHORT);
        DateFormat dfDateMedium = DateFormat.getDateInstance(DateFormat.MEDIUM);
        DateFormat dfDateLong = DateFormat.getDateInstance(DateFormat.LONG);
        DateFormat dfDateFull = DateFormat.getDateInstance(DateFormat.FULL);

        System.out.println("getInstance()=" + dfDefault.format(fecha));
        System.out.println("getDateInstance()=" + dfDateInstance.format(fecha));
        System.out.println("getDateInstance(DateFormat.SHORT)=" + dfDateShort.format(fecha));
        System.out.println("getDateInstance(DateFormat.MEDIUM)=" + dfDateMedium.format(fecha));
        System.out.println("getDateInstance(DateFormat.LONG)=" + dfDateLong.format(fecha));
        System.out.println("getDateInstance(DateFormat.FULL)=" + dfDateFull.format(fecha));
        try {
            Date fecha2 = dfDateMedium.parse("27/03/1976");
            System.out.println("Parsed:" + fecha2);
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }
}




El resultado para este código, en mi caso, es el siguiente:

getInstance()=22/04/09 11:12 AM
getDateInstance()=22/04/2009
getDateInstance(DateFormat.SHORT)=22/04/09
getDateInstance(DateFormat.MEDIUM)=22/04/2009
getDateInstance(DateFormat.LONG)=22 de abril de 2009
getDateInstance(DateFormat.FULL)=miércoles 22 de abril de 2009
Parsed:Sat Mar 27 00:00:00 COT 1976


4 comentarios:

  1. ok gracias, esto es lo que estaba buscando

    ResponderEliminar
  2. hola amigo sabes yo quiero coalcular los dias entre dos fechas ejemplo la de hoy y 21/4/2012
    como puedo hacer i la fecha la quiero ingresar por medio de un jtextfile...
    ayudame gracias...

    ResponderEliminar
    Respuestas
    1. Hola spartano
      Usa los milisegundos y luego lo divides lo que vale en el dia.

      String sFecha1="24/04/2012";
      String sFecha2="15/03/2012";

      DateFormat dateFormat=new SimpleDateFormat("dd/MM/yyyy");

      Date fecha1=dateFormat.parse(sFecha1);
      Date fecha2=dateFormat.parse(sFecha2);

      long difms=fecha1.getTime()-fecha2.getTime();
      double days=difms/(1000.0*60.0*60.0*24.0);
      System.out.println("Diferencia de dias de "+sFecha1+" y "+sFecha2+" es "+days+" días");

      Eliminar
  3. gracias amigo me sirvio es justo lo que buscaba :)

    ResponderEliminar

Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups


Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/