2012-07-23 25 views
5

MessageFormat sınıfı, parametreleri ekleyebildiğimiz ve biçimlendirmeyi doğrudan onunla yapabildiğimiz için iyidir. Bu, bir ileti paketi özellik dosyalarında doğrudan bir tarih formatını kolayca geçersiz kılmama izin veriyor. Exemple içinTarih parametreleriyle birlikte TimeZone ve MessageFormat

:

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

Ama ne ben farklı saat dilimlerinde tarihini göstermek gerekirse? kullandığımız İşte


Ben benim paket içinde bunları enjekte etmeden önce tüm tarihleri ​​biçimlendirmek biliyorum, ama bu görüntülenen her tarihini biçimlendirmek için bir acıdır ...

org .springframework.context.support.ReloadableResourceBundleMessageSource

muhtemelen geçersiz ve kendi MessageFormat ele alacak uSI oluşturmak için deneyebilirsiniz

İyi bir saat dilimi. Ancak mimarimiz için uygun olmayabilir.

Başka alternatif görüyor musunuz?

cevap

4

Sadece aynı soruna bakıyordum. Bu çözüm ilginç görünüyor: 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)); 
    } 
} 

Fikir üzerinden gitmek MessageFormat içinde biçimleri çözümlenir ve tarih biçimlerini TimeZone ayarlamaktır.

+0

Teşekkürler, bu güzel bir fikir! –

+0

Evet, ben de öyle düşündüm. Gördüğüm tek sorun, çok iş parçacıklı erişimle uğraşırken dikkatli olmanız gerektiğidir - gerekirse tüm MessageFormat öğesinin bir kopyasını daha iyi oluşturun. –

İlgili konular