[Java] Cómo convertir cadenas de fecha y hora a la fecha usando GWT?


Answers

Hola, hay dos opciones.

La primera es que, como ya es una cadena, puede usar una expresión regular para modificar el formato.

El segundo es usar un SimpleDateFormater, puede analizar la cadena a una fecha y viceversa. Por ejemplo:

public class DateMerge {

    public static void main(String arg[]) 
    {
        String out = dateConvert("2012-06-20 16:00:47");
        System.out.println(out);
    }

    public static String dateConvert (String inDate)
    {
        try {
         DateFormat formatter ; 
         Date date ; 
          formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          date = (Date)formatter.parse(inDate);
          formatter = new SimpleDateFormat("dd-MM-yyyy");
          String outDate = formatter.format(date);
          return outDate;

          } catch (ParseException e)
          {System.out.println("Exception :"+e);  }  


    return null;
    }
}
Question

En mysql, tengo un campo time_entered de tipo datetime (datos de muestra: 2012-06-20 16:00:47). También tengo un método, getTimeEntered (), que devuelve el valor como String. Quiero mostrar la fecha en este formato 2012-06-20 usando DateTimeFormat de GWT.

aquí está mi código:

String date = aprHeaderDW.getTimeEntered();
DateTimeFormat fmt = DateTimeFormat.getFormat("MM-dd-yyyy");
dateEntered.setText("" + fmt.format(date));

El problema es que el método de formato no acepta argumentos como String. Entonces, si solo hay una forma de convertir la fecha del tipo String en Date, probablemente podría funcionar. Intenté encasillar pero no funcionó.




Después de intentarlo muchas veces, se me ocurrió una solución, basada en @Keppil y agregando mi propio código.

Aquí está la solución sugerida por Keppil para convertir String datetime en tipo de fecha:

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2012-06-20 16:00:47");

... pero mi segundo requisito es mostrar solo la fecha como 2012-06-20. Aunque eliminé HH: mm: ss, todavía se mostraba el horario de este modo 2012-06-20 00:00:00.

Esta es mi solución final:

Date date = null;
String d = rs.getString(SQL_CREATION_TIME); // assigns datetime value from mysql

// parse String datetime to Date
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(d);
System.out.println("time entered: "+  date);
} catch (ParseException e) { e.printStackTrace(); }

// format the Date object then assigns to String
Format formatter;
formatter = new SimpleDateFormat("yyyy-MM-dd");
String s = formatter.format(date);