2012-07-23 8 views
5

MessageFormat-Klasse ist cool, weil wir Parameter einfügen und die Formatierung direkt damit ausführen können. Dies ermöglicht es mir, in der Lage zu sein, ein Datumsformat in einem Nachrichtenpaket direkt zu überschreiben.TimeZone und MessageFormat mit Datumsparametern

Für exemple:

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

Aber was, wenn ich das Datum in verschiedenen Zeitzonen angezeigt werden müssen?

Ich weiß, ich kann alle Daten formatiert werden, bevor sie in meinem Bündel Injektion, aber das ist ein Schmerz jedes Datum angezeigt zu formatieren ...


Bei der Arbeit wir

verwenden org .springframework.context.support.ReloadableResourceBundleMessageSource

ich wahrscheinlich versuchen, kann es außer Kraft zu setzen und meine eigenen Message zu erstellen, die in Betracht ziehen würden usi ng der guten Zeitzone. Aber es passt vielleicht nicht gut zu unserer Architektur.

Sehen Sie eine andere Alternative?

Antwort

4

Ich schaute nur auf das gleiche Problem. Diese Lösung sieht interessant: 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)); 
    } 
} 

Idee ist über analysiert Formate in Messageformat zu gehen, und legen Time-Zone zu Datumsformate.

+0

Danke, das ist eine nette Idee! –

+0

Ja, das dachte ich mir auch. Das einzige Problem, das ich damit sehe, ist, dass Sie beim Multithread-Zugriff vorsichtig sein müssen - erstellen Sie besser eine Kopie des gesamten MessageFormat, falls nötig. –