Calendar # getFirstDayOfWeek () возвращает неправильное значение - PullRequest
0 голосов
/ 14 февраля 2019

Возможно, я упускаю из виду нечто невероятно очевидное, но почему это так:

final Calendar calendar = Calendar.getInstance(Locale.GERMAN);
System.out.println(calendar.getFirstDayOfWeek());

Результат

1  (Sunday)

вместо

2 (Monday)

?

И прежде чем кто-то скажет, что "первый день недели - воскресенье для всех говорящих по-немецки" ( снова ), это не : "[D]номер дня недели, от 1 до 7, начиная с понедельника и заканчивая воскресеньем. "

Фактически, Locale.GERMANY приводит к правильному" понедельнику ".

Почему первым днем ​​недели для немецкого языка будет воскресенье?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Все локали по умолчанию для определенного языка, например Locale.GERMAN, Locale.FRENCH, Locale.ENGLISH по умолчанию не указанная часть локали в США.Фактически, эти константы представляют говорящего на немецком, французском или английском языке человека, живущего в США.

Вероятно, нет хорошего ответа на этот вопрос, потому что знание одного языка недостаточно для определения первого дня недели.Возможно, из-за того, что Java была разработана американской компанией для рынка США, значения локали по умолчанию используют США как страну.

Если вам нужна немецкая локаль, используйте Locale.GERMANY, как указано в другом ответе.

0 голосов
/ 14 февраля 2019

Вы как бы сами ответили на это, в своем заявлении вы указали язык для немецкого языка, а не для страны, измените его на

 final Calendar calendar = Calendar.getInstance(Locale.GERMANY);

(Обратите внимание, поскольку вы не изменили страну,используется по умолчанию)

...