No sé si os habrá pasado alguna vez… Pero cuando hay que poner una variable fecha y hay que darle un formato determinado a mí me da mucha pereza. Sobre todo porque nunca me acuerdo como lo hice la última vez. En este post vamos a analizar cómo formatear fechas de una forma rápida y sencilla.
FORMATOS PREDEFINIDOS:
Java nos ofrece una serie de formatos predefinidos con los que trabajar. Así que si podemos elegir antes de implementar la solución una buena idea es utilizar uno de ellos.
Para formatear una fecha necesitaremos un formato y un objeto que asigne dichos formatos.
Date today;
String dateOut;
DateFormat dateFormatter;
dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, currentLocale);
today = new Date();
dateOut = dateFormatter.format(today);
System.out.println(dateOut + " " + currentLocale.toString());
En este ejemplo, se ha escogido el formato por defecto y se ha seleccionado el Locale actual. Podemos hacer una prueba definiéndolo como:
Locale currentLocale = new Locale (“en”, “US”) ;
Entre los tipos de formatos disponibles tendríamos:
Los datos mostrados variarán dependiendo del Locale seleccionado.
Si en lugar de ser fechas fuesen horas, utilizaríamos otro formateador:
DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, currentLocale);
El formato por defecto también dispone de distintas representaciones:
Podemos, además combinar ambos formatos:
DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, currentLocale);
FORMATOS PERSONALIZADOS
En la mayoría de los casos, estos formatos no se adecuarán a nuestras necesidades, y tendremos que implementar nuevos formatos. Para ello utilizaremos patrones.
Date today;
String result;
SimpleDateFormat formatter;
formatter = new SimpleDateFormat("EEE d MMM yy", currentLocale);
today = new Date();
result = formatter.format(today);
En este caso hemos definido un formato que se corresponderá con: Tue 30 Jun 09 (para nuestro Locale definido más arriba).
Los literales que podemos mostrar los podemos ver en la siguiente tabla (el numero de letras que se incluya determinará el número de caracteres que se muestren):
Con esto tendríamos cubiertas todas las necesidades para la representación de cualquier fecha. Pero todavía podemos personalizarlo un poco más.
MODIFICAR LITERALES DE LOS FORMATOS
Para terminar, vamos a indicar como se pueden modificar los literales que se muestran en las representaciones de las fechas. En el siguiente ejemplo, se modificarán los días de la semana para ponerlos en mayúsculas.
Utilizaremos el objeto DateFormatSymbols que nos permitirá realizar modificaciones mediante sus métodos:
Date today;
String result;
SimpleDateFormat formatter;
DateFormatSymbols symbols;
String[] modifiedDays;
symbols = new DateFormatSymbols(new Locale("en","US"));
String[] capitalDays = {"", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
symbols.setShortWeekdays(capitalDays);
formatter = new SimpleDateFormat("E", symbols);
today = new Date();
result = formatter.format(today);
Y cuando se imprima result por pantalla dará como resultado WED (en este caso) en lugar de Wed.
Espero que este repaso sobre las fechas en java os haya sido de utilidad… Y cuando dudéis ya sabéis donde encontrarlo J.






Replica a esolero de Frigo Cancelar la respuesta