什么是I18N友好的方式来显示日期范围?

Ste*_*eod 5 java internationalization jodatime

我显示日期范围如下:

public static void main(String[] args) {
    Locale.setDefault(new Locale("nl", "NL"));

    DateTime d1 = new DateTime();
    DateTime d2 = new DateTime().plusDays(30);

    final String s1 = d1.toString(DateTimeFormat.shortDate());
    final String s2 = d2.toString(DateTimeFormat.shortDate());

    System.out.println(s1 + "-" + s2); // shows  "4/05/12-3/06/12" for en_AU
    System.out.println(s1 + "-" + s2); // shows  "4-5-12-3-6-12" for nl_NL
}
Run Code Online (Sandbox Code Playgroud)

对于荷兰的用户,他们看到"4-5-12-3-6-12".这令人困惑.

有什么方法可以显示考虑用户区域设置的日期范围?

McD*_*ell 5

在本地化应用程序中,翻译人员在翻译资源包时会决定这种分离:

#foo.properties
#comment: a date range
dateRange={0,date}-{1,date}
Run Code Online (Sandbox Code Playgroud)

可能成为:

#foo_en.properties
dateRange={0,date} to {1,date}
Run Code Online (Sandbox Code Playgroud)

然后可以使用MessageFormat类型处理.形式的东西:

//untested code
MessageFormat mf = new MessageFormat(formatString, locale);
//java.util.Date instances
Object[] range = {date1, date2};
String result = mf.format(range);
Run Code Online (Sandbox Code Playgroud)

即使您未提供完整翻译,此方法也可能适用于某些本地化.