我显示日期范围如下:

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
}

对于荷兰的用户,他们看到的是“4-5-12-3-6-12”。这很令人困惑。

显示日期范围的一种方式是考虑用户的语言环境?

最佳答案

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

#foo.properties
#comment: a date range
dateRange={0,date}-{1,date}

可能成为:
#foo_en.properties
dateRange={0,date} to {1,date}

然后可以使用MessageFormat类型进行处理。形式的东西:
//untested code
MessageFormat mf = new MessageFormat(formatString, locale);
//java.util.Date instances
Object[] range = {date1, date2};
String result = mf.format(range);

即使您没有提供完整的翻译,这种方法也可能适用于某些本地化版本。

关于java - I18N友好的显示日期范围的方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10449487/

10-11 19:18