Reputation: 5038
I need to get the first day of week for a certain Locale / Country.
I tried to find it using this code:
final Locale[] locales = new Locale[]{
new Locale("en_GB"),
new Locale("ru_RU"),
new Locale("en_US"),
new Locale("es_ES"),
new Locale("fr_FR"),
new Locale("iw_IL"),
new Locale("he_IL")
};
for (final Locale locale : locales) {
final Calendar cal = Calendar.getInstance(locale);
final int firstDayOfWeek = cal.getFirstDayOfWeek();
System.out.println(firstDayOfWeek);
}
The result of this code is that all of these locales are retrieving '1' which is Sunday, and locales such en_US
should return 2 which is Monday.
Upvotes: 6
Views: 6800
Reputation: 4266
Pass in two arguments – language & country, separately – rather than your string with underscore. See Oracle Tutorial.
final Locale[] locales = new Locale[]{
new Locale("en", "GB"), // Pass language code, then country code, separately.
new Locale("ru", "RU"),
new Locale("en", "US"),
new Locale("es", "ES"),
new Locale("fr", "FR"),
new Locale("iw", "IL"),
new Locale("he", "IL")
};
And then I would use Java8 to get the first day of the week:
DayOfWeek firstDayOfWeek = WeekFields.of(locale).getFirstDayOfWeek();
System.out.println(firstDayOfWeek);
Output:
MONDAY
MONDAY
SUNDAY
MONDAY
MONDAY
SUNDAY
SUNDAY
Upvotes: 13
Reputation: 863
You have a mistake in initializing the Locale
, you need to pass two arguments language and country. The single argument constructor is only for language.
For example for Locale("en_GB")
, should be Locale("en", "GB")
, and then the result will be 2.
BTW for Locale("en", "US")
the result is 1 (Sunday).
Upvotes: 5