4

我正在尝试使用带有德语区域设置的日历函数 getDisplayNames() 以德语获取星期几。

Calendar now = Calendar.getInstance();
Map<String,Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, new Locale("de_DE"));

相反,我得到英文的星期几名称:Sunday, Monday, .... etc.
我做错了什么还是根本不起作用?也许它与我的 IDEA 调试器控制台的 toString() 有关?我正在使用最新的 Intellij 12.1.2。

4

3 回答 3

4

使用 ,Locale.GERMANnew Locale("de"), 代替new Locale("de_DE")

Map<String,Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, 
            Calendar.LONG, Locale.GERMAN);

Map<String,Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK, 
            Calendar.LONG, new Locale("de"));

阅读 Javadocs for Locale(String)构造函数会很有帮助,该构造函数显示“Construct a locale from a language code”。德语的语言代码是“de”而不是“de_DE”。

于 2013-05-01T05:56:17.467 回答
2

区域设置错误,请尝试

    Map<String, Integer> displayNames = now.getDisplayNames(Calendar.DAY_OF_WEEK,
            Calendar.LONG, new Locale("de"));

结果

{Donnerstag=5, Mittwoch=4, Freitag=6, Dienstag=3, Samstag=7, Sonntag=1, Montag=2}

带有一个 arg 的语言环境意味着Locale(String language)

于 2013-05-01T05:57:59.960 回答
2

您不使用 Calendar 类的实例,而是使用 java.text.DateFormatSymbols 来获取特定区域设置的月份名称、工作日名称等信息。这是获取德国工作日名称的示例。

String[] weekdays = new DateFormatSymbols(Locale.GERMANY).getWeekdays();
for (int i = 0; i < weekdays.length; i++) {
    System.out.println("weekday = " + weekdays[i]);
}
于 2013-05-01T06:11:21.887 回答