2012-07-23 18 views
5

MessageFormat lớp là mát mẻ bởi vì chúng tôi có thể chèn các tham số và làm định dạng trực tiếp với nó. Điều này cho phép tôi có thể dễ dàng ghi đè định dạng ngày trực tiếp trong một tệp thuộc tính gói thư.TimeZone và MessageFormat với các tham số ngày

Đối dụ:

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

Nhưng nếu tôi cần phải hiển thị ngày ở các múi giờ khác nhau?

Tôi biết tôi có thể định dạng tất cả các ngày trước khi tiêm chúng trong bó của tôi, nhưng đây là một nỗi đau để định dạng mỗi ngày hiển thị ...


Tại nơi làm việc chúng tôi đang sử dụng

org .springframework.context.support.ReloadableResourceBundleMessageSource

Tôi có thể cố gắng ghi đè lên và tạo MessageFormat của riêng mình sẽ xem xét chúng tôi ng múi giờ tốt. Nhưng nó có thể không phù hợp với kiến ​​trúc của chúng tôi.

Bạn có thấy bất kỳ giải pháp thay thế nào khác không?

Trả lời

4

Tôi vừa xem xét cùng một vấn đề. Giải pháp này có vẻ thú vị: 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 là để đi qua phân tích định dạng trong MessageFormat, và thiết lập TimeZone sang các định dạng ngày.

+0

Cảm ơn, đây là một ý tưởng hay! –

+0

Vâng, tôi cũng nghĩ vậy. Vấn đề duy nhất tôi thấy với nó là bạn cần phải cẩn thận khi xử lý truy cập đa luồng - tốt hơn là tạo một bản sao của toàn bộ MessageFormat nếu cần. –

Các vấn đề liên quan