Foros del Web » Programación para mayores de 30 ;) » Java »

Formatear fechas según Locale

Estas en el tema de Formatear fechas según Locale en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/01/2011, 13:43
 
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.
  #2 (permalink)  
Antiguo 17/01/2011, 16:19
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Formatear fechas según Locale

Hola, no sé si este link te puede servir.--- http://www.error500.net/garbagecollector/archives/categorias/java/formateo_de_fechas_en_java.php
  #3 (permalink)  
Antiguo 15/03/2011, 04:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Formatear fechas según Locale

Tengo el mismo problema, como lo habeis solucionado ?

El link anterior no me sirve

Gracias
  #4 (permalink)  
Antiguo 15/03/2011, 09:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Formatear fechas según Locale

Hola Paslopjo:

Al final no pude resolverlo de la forma que había planeado.

Lo que utilizo al final es esta función, que se basa en el SimpleDateFormat.

Código:
 public static String cambiarFormatoFecha (String fecha, String formatoOrig, String formatoFin){
    SimpleDateFormat sdf = new SimpleDateFormat(formatoOrig);
    try {
        Date fechaOrig = sdf.parse(fecha);
        sdf = new SimpleDateFormat(formatoFin);
        return sdf.format(fechaOrig);
    } catch (ParseException e) {
        return null;
    }
}
Seguramente se puede hilar más fino, buscando con la clase DateFormatterSymbols o algo así, los símbolos propios del locale que necesitas. Es posible que también puedas obtener el formato base del locale para DateTime de la clase DateFormat y con eso montar un SimpleDateFormat a conveniencia, de manera que sabiendo en qué orden se muestran el día, mes y año, luego tú le puedas indicar el número de dígitos que necesitas para cada parte de la fecha. Creo que ese patrón te lo devuelve DateFormat.getPattern o algo así. Hablo de memoria y a lo mejor no sirve porque al final tuve que abandonar la opción de ser perfeccionista y por temas de tiempo pasar a lo rápido y práctico aunque sea menos bonito.

Un saludo.
  #5 (permalink)  
Antiguo 15/03/2011, 12:39
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 9 meses
Puntos: 20
Respuesta: Formatear fechas según Locale

hola

porque no haces esto

Código java:
Ver original
  1. DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
  2. df.format(new Date());

Etiquetas: fechas, formatear, locale
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:51.