Is first-day-of-week language-based or country-based on JVM?
As it turns out, this is JDK version-dependent. JDK8 returns first day of week based on language, so it returns SUNDAY
for "en_FI"
"en_US"
and MONDAY
for "fi_FI"
and "fi_US"
.
However, JDK9 switched to the CLDR system which (more logically) uses country. So, JDK9 will return MONDAY
both for "en_FI"
and "fi_FI"
locales, and will return SUNDAY
for "fi_US"
and "en_US"
.
See JEP 252 for more details.
Also, quoting from JDK-8203280:
To add an explanation to this behavior, the CLDR implementation is correct, i.e., the first day of week should be defined by the region, not by the language.