芬兰日期本地化的错误?

时间:2017-06-28 23:48:33

标签: java localization locale date-format finnish

我尝试使用此代码本地化芬兰:

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

2 个答案:

答案 0 :(得分:5)

是的,这是JDK中的一个错误(请参阅JDK-8074791),其中额外的'ta'附加到月份名称。这从JDK 8u60版本开始修复。因此,如果升级到JDK8u131等最新的JDK版本,您将获得正确的输出。

答案 1 :(得分:3)

我确信the answer by Pallavi Sonal是正确的。我已经对它进行了投票,你应该接受它。我本来想保留以下评论,但它值得更好的格式化,所以这里。

java.time

由于您使用的是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。