2012-07-23 10 views
5

La classe MessageFormat è interessante perché è possibile inserire parametri e eseguire direttamente la formattazione. Questo mi permette di essere in grado di sovrascrivere facilmente un formato data direttamente in un file di proprietà dei pacchetti di messaggi.TimeZone e MessageFormat con i parametri di data

Per exemple:

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

Ma cosa succede se ho bisogno di visualizzare la data in fusi orari diversi?

So che posso formattare tutte le date prima di iniettare nel mio pacchetto, ma questo è un dolore per formattare ogni data visualizzata ...


Al lavoro che stiamo utilizzando

org .springframework.context.support.ReloadableResourceBundleMessageSource

posso probabilmente cercare di ignorare e creare il mio MessageFormat che prenderebbe in considerazione l'USI ng il buon fuso orario. Ma potrebbe non adattarsi bene alla nostra architettura.

Vedi altre alternative?

risposta

4

Stavo solo guardando lo stesso problema. Questa soluzione sembra interessante: 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 è quella di andare oltre analizzato formati in MessageFormat, e impostare TimeZone di formati di data.

+0

Grazie, questa è una bella idea! –

+0

Sì, lo pensavo anch'io. L'unico problema che vedo è che è necessario fare attenzione quando si ha a che fare con l'accesso multithread: meglio creare una copia dell'intero MessageFormat se necessario. –