4

ドイツ語ロケールでカレンダー関数 getDisplayNames() を使用して、ドイツ語で曜日を取得しようとしています。

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

代わりに、日曜日、月曜日などの英語の曜日名を取得します。
何か間違っているのでしょうか、それとも単に機能しませんか? 私の IDEA デバッガーコンソールの toString() と何か関係があるのでしょうか? 最新の Intellij 12.1.2 を使用しています。

4

3 に答える 3

4

の代わりに、Locale.GERMANまたは を使用new 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"));

「言語コードからロケールを構築する」と書かれているLocale(String)コンストラクターの Javadoc を調べると役に立ちます。ドイツ語の言語コードは「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}

引数が 1 つのロケールとは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 に答える