Volvemos con las famosas fechas en Java.
El problema que tengo es que quiero formatear una fecha obtenida de BBDD, en principio según el formato Español e Ingles, aunque puede que tenga que incluirlo también en Alemaán.
El formato de BBDD generalmente será de tipo aaaaMM pero necesito mostrarlo como aaaa + +separador + MM + separador + dd.
Lo primero que hago con una sencilla función, que devuelve un String, es convertir el formato de BBDD a dd/MM/yyyy, poniendo como día el 01.
Para obtener el String definitivo para mostrar en una jsp, he hecho varias pruebas con la siguiente función:
Código:
public static String ver fechas(Locale local) { Date hoy = new Date(); String resultado; String dia = "15/01/2011"; DateFormat df = DateFormat.getDateInstance(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try { hoy = sdf.parse(dia); } catch (Exception e) {} System.out.println("*************************************"); System.out.println("Locale: " + local.toString()); df = DateFormat.getDateInstance(DateFormat.SHORT, local); resultado = df.format(hoy); System.out.println("FORMATO " + String.valueOf(DateFormat.SHORT) + ": " + resultado); return resultado; }
Si ejecuto esta función para los Locale de España, USA y Alemania, obtengo la siguiente salida:
*************************************
Locale: en_US
FORMATO 3: 1/15/11
*************************************
Locale: es_ES
FORMATO 3: 15/01/11
*************************************
Locale: de_DE
FORMATO 3: 15.01.11
Como se puede ver, saca la fecha con los símbolos de separación propios y con el orden día, mes y año correcto.
El problema que tengo es que necesito sacar esas fecha con el formato que indiqué al principio, es decir, 4 dígitos para el año y 2 para el mes y el día.
DateFormat no me deja indicar un formato propio y si utilizo SimpleDateFormat, entonces me vuelve a alterar el orden de los campos y el separador, al menos no he conseguido que lo haga como quiero.
¿Alguien tiene idea de cómo hacer este último cambio?
Un saludo y gracias.