Search code examples
javalocalizationlocaledate-formatfinnish

Bug in Finnish date localization?


I'm trying to localize for Finland using this code:

Locale finLocale = new Locale("fi", "FI");
Date today = new Date(2017, 1, 1);
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, finLocale);
String formattedDate = dateFormat.format(today);
System.out.println(formattedDate);

What I end up getting is "helmikuutata". I would expect "helmikuu" or "helmikuuta", but this just seems wrong.

Is this valid Finnish, or is there a bug in Java? My version is 1.8.0_31


Solution

  • Yes, this was a bug in JDK (See JDK-8074791), wherein an extra 'ta' was appended to the month name. This got fixed from JDK 8u60 version onwards. So, if you upgrade to latest JDK versions like JDK8u131, you will get the correct output.