我尝试使用此代码本地化芬兰:
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);
我最终获得的是" helmikuutata"。我期待" helmikuu"或" helmikuuta",但这似乎错了。
这是有效的芬兰语,还是Java中存在错误?我的版本是1.8.0_31
答案 0 :(得分:5)
是的,这是JDK中的一个错误(请参阅JDK-8074791),其中额外的'ta'
附加到月份名称。这从JDK 8u60
版本开始修复。因此,如果升级到JDK8u131
等最新的JDK版本,您将获得正确的输出。
答案 1 :(得分:3)
我确信the answer by Pallavi Sonal是正确的。我已经对它进行了投票,你应该接受它。我本来想保留以下评论,但它值得更好的格式化,所以这里。
由于您使用的是Java 8(即使您没有使用),您也会更喜欢java.time的现代程序员友好API:
LocalDate today = LocalDate.of(2017, Month.FEBRUARY, 1);
DateTimeFormatter dateFormat = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)
.withLocale(finLocale);
String formattedDate = today.format(dateFormat);
在我的Java 1.8.0_131上,它给出了预期的
1. helmikuuta 2017
如果有人在阅读本文时使用的是Java 6或7,请考虑使用ThreeTen Backport库,以便您可以使用现有的日期和时间API。