datetimeformatter 不会返回希腊语言环境中月份值的预期输出

问题描述 投票:0回答:1

我正在构建一个日历,所以对于我显示的每个月,我希望在顶部显示下一年的月份,例如:“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 android datetime-format
1个回答
0
投票

即使我是意大利人,我也有一个解决方案☺,但你可能不喜欢它。

首先:结果取决于 Java 版本(叹息!):对于 Java 8,如果您使用

new Locale("el", "CY");
(即塞浦路斯),您会得到您想要的结果,但是对于 Java 11 和 Java 17,希腊和塞浦路斯都会给出结果你不喜欢。

对于 Java 11 和 17,如果您通过在命令行上添加 -Djava.locale.providers=COMPAT 来更改

Locale Data Provider
,则可以获得与 Java 8 相同的行为。

© www.soinside.com 2019 - 2024. All rights reserved.