lunes, 9 de febrero de 2009

Convirtiendo Date a String / String a Date

Podemos convertir un objeto fecha a String de varias maneras. Cada manera es un tipo de formato establecido por el JVM instalado en nuestro computador. Consideremos este ejemplo:
        Date d1 = new Date();
DateFormat[] dfa = new DateFormat[6];
dfa[0] = DateFormat.getInstance();
dfa[1] = DateFormat.getDateInstance();
dfa[2] = DateFormat.getDateInstance(DateFormat.SHORT);
dfa[3] = DateFormat.getDateInstance(DateFormat.MEDIUM);
dfa[4] = DateFormat.getDateInstance(DateFormat.LONG);
dfa[5] = DateFormat.getDateInstance(DateFormat.FULL);

for (DateFormat df : dfa) {
System.out.println(df.format(d1));
}



En mi caso, el resultado es:
09/02/09 10:29 AM
09/02/2009
09/02/09
09/02/2009
9 de febrero de 2009
lunes 9 de febrero de 2009

Notemos el resultado del formato obtenido por DateFormat.getInstance(). Es toda la fecha en formato corto, además de la hora. Mientras que si obtenemos el formato con DateFormat.getDateInstance() la fecha se muestra en formato medio (Podemos consultar la configuración del sistema operativo referido al formato de fechas). También podemos ver los demás formatos: SHORT, MEDIUM, LARGE y FULL.

De la misma manera podemos convertir de String a objeto java.util.Date. Aquí muestro las diferentes maneras, de diferentes cadenas:

DateFormat df = DateFormat.getDateInstance();
Date d = df.parse("09/02/2009");

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
Date d = df.parse("09/02/09");

DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
Date d = df.parse("09/02/09");

DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
Date d = df.parse("9 de febrero de 2009");

DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);
Date d = df.parse("lunes 9 de febrero de 2009");


4 comentarios:

  1. Hola, antes que nada MUCHISIMAS GRACIAS! Estuve buscando una solución a esto desde ayer y no encontraba nada asi de simple que funcione tan bien. Gracias.
    El unico comentario para agregar sería que el IDE (NetBeans) me sugirio que lo envuelva en una sentencia try/catch, por lo que empleé el primer ejemplo:

    DateFormat df = DateFormat.getDateInstance();
    Date d = df.parse("09/02/2009");

    Que me quedó:

    DateFormat df2 = DateFormat.getDateInstance();
    try {
    Date fechaNac = df2.parse(request.getParameter("02/08/2008"));
    emp.setFechaNacim(fechaNac);
    } catch (ParseException ex) {
    Logger.getLogger(AdminController.class.getName()).log(Level.SEVERE, null, ex);
    }

    Saludos desde Argentina y funciona a la perfección!

    ResponderEliminar
    Respuestas
    1. Pues que bueno que te haya ayudado.

      Pues sí, ese try/catch lo omití porque quería centrar la atención en la conversión de la cadena en sí.

      Saludos desde Perú

      Eliminar
  2. como puedo solucionar esto...


    public void InsertarVentas(VentaVO ve) {
    try {

    pst = ConnexionSQL.coneccionbdSQL().prepareStatement("insert into ventas values (?,?,?,?,?,?)");
    pst.setDate(1, ve.getFechaPedido());------------errrorrrr-------
    pst.setInt(2, ve.getNumPedido());
    pst.setInt(3, ve.getNumVenta());
    pst.setInt(4, ve.getNumComida());
    pst.setInt(5, ve.getUnidadesComida());
    pst.setDouble(6, ve.getValorVenta());

    int aux = pst.executeUpdate();
    if (aux != 1) {
    throw new SQLException("Error...al insertar Venta..");

    } else {
    JOptionPane.showMessageDialog(null, "Insercion correcto!!");
    }
    } catch (Exception e) {
    JOptionPane.showMessageDialog(null, e.getMessage());
    }

    }

    ResponderEliminar
    Respuestas
    1. es error en compilacion o ejecucion?

      Por favor, como dice en el mensaje.. estas preguntas hacerlas en los foros de Google Groups. Gracias

      Eliminar

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/