2012-07-23 4 views
5

MessageFormat 클래스는 매개 변수를 삽입하고 직접 매개 변수를 삽입 할 수 있으므로 멋지습니다. 이렇게하면 메시지 묶음 속성 파일에서 직접 날짜 형식을 쉽게 무시할 수 있습니다. exemple 들어날짜 매개 변수가있는 TimeZone 및 MessageFormat

:

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

하지만 난 다른 시간대의 날짜를 표시해야하는 경우? 우리가 사용하는 작업에서


내가 내 번들을 주입하기 전에 모든 날짜를 포맷 할 수 있습니다 알고 있지만이 표시된 모든 날짜의 형식을 고통 ...

조직 .springframework.context.support.ReloadableResourceBundleMessageSource

나는 그것을 무시하고 usi를 고려할 내 자신의 MessageFormat을 만들려고합니다. 좋은 시간대. 그러나 우리 아키텍처에는 적합하지 않을 수 있습니다.

다른 대안이 있습니까?

답변

4

나는 같은 문제를보고있었습니다. 이 솔루션은 흥미로운 같습니다 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)); 
    } 
} 

아이디어 가서 MessageFormat의에서 형식을 구문 분석 및 날짜 형식으로 시간대를 설정하는 것입니다.

+0

감사합니다. 좋은 아이디어입니다! –

+0

네, 저도 그렇게 생각했습니다. 필자가 볼 수있는 유일한 문제는 다중 스레드 액세스를 처리 할 때주의해야한다는 것입니다. 필요한 경우 MessageFormat 전체 복사본을 만드는 것이 좋습니다. –