2012-07-23 13 views
5

La clase MessageFormat es genial porque podemos insertar parámetros y hacer el formateo directamente con él. Esto me permite anular fácilmente un formato de fecha directamente en los archivos de propiedades de un paquete de mensajes.TimeZone y MessageFormat con los parámetros de fecha

Para exemple:

MessageFormat.format("Test inserting a date param here: {0,date,dd/MM/yyyy HH'h'mm} -> OK cool", new Date()); 

Pero lo que si tengo que mostrar la fecha en diferentes zonas horarias?

Sé que puedo dar formato a todas las fechas antes de inyectarlas en mi paquete, pero esto es un dolor para dar formato a cada fecha que se muestra ...


En el trabajo que estamos utilizando

org .springframework.context.support.ReloadableResourceBundleMessageSource

es probable que pueda tratar de anularlo y crear mi propia MessageFormat que consideraría USI ng la buena zona horaria. Pero puede no encajar bien para nuestra arquitectura.

¿Ve alguna otra alternativa?

Respuesta

4

Solo estaba viendo el mismo problema. Esta solución parece interesante: https://groups.google.com/d/msg/comp.lang.java.programmer/1AJIpwtn5HA/zd3Sw8IJrTQJ

public class Format { 
    public static void main(String argv[]) { 
    MessageFormat mf = new MessageFormat("The time is: {0, time, HH:mm}"); 


    TimeZone tz = TimeZone.getTimeZone("GMT"); 
    Object [] formats = mf.getFormats(); 
    for (int i = 0; i < formats.length; i++) { 
     if (formats[i] instanceof SimpleDateFormat) { 
      ((SimpleDateFormat)formats[i]).setTimeZone(tz); 
     } 
    } 
    Date date = new Date(); 
    Object [] args = {date}; 
    System.out.println(mf.format(args)); 
    } 
} 

idea es ir más analizada en formatos MessageFormat, y establecer la zona horaria para formatos de fecha.

+0

Gracias, esta es una buena idea! –

+0

Sí, eso también pensé. El único problema que veo es que debes tener cuidado cuando se trata de acceso multiproceso: mejor crea una copia de todo el formato de mensaje si es necesario. –