Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2011, 13:43
JaimeLG
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 1
Formatear fechas según Locale

Hola:

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.