我正在构建一个日历,所以对于我显示的每个月,我希望在顶部显示下一年的月份,例如:“2023 年 11 月”,该应用程序是希腊语,所以在希腊语中,我期望的结果是:“Noέμβριος 2023 ”。我做了一个方法,我得到的输出是“NOεμβρίου 2023”,这个英文输出就像 2023 年 11 月,有一点免费翻译。我知道也许解决方案是通过 MapList,它基于我给出的真实值的错误值。我想知道是否有另一种更快的方法,因为我找不到任何内置方法。
我认为对于希腊程序员来说也许更容易帮助我,但感谢每一位在其母语中遇到类似问题的程序员提供的帮助。
public static String monthYearFromDate(LocalDate date)
{
Locale greekLocale = new Locale("el");
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("MMMM yyyy")
.toFormatter(greekLocale);
return date.format(formatter);
}
即使我是意大利人,我也有一个解决方案☺,但你可能不喜欢它。
首先:结果取决于 Java 版本(叹息!):对于 Java 8,如果您使用
new Locale("el", "CY");
(即塞浦路斯),您会得到您想要的结果,但是对于 Java 11 和 Java 17,希腊和塞浦路斯都会给出结果你不喜欢。
对于 Java 11 和 17,如果您通过在命令行上添加 -Djava.locale.providers=COMPAT
来更改
Locale Data Provider,则可以获得与 Java 8 相同的行为。