Java 使用DateFormat时未本地化/转换am/pm字符串

Java 使用DateFormat时未本地化/转换am/pm字符串,java,android,simpledateformat,date-formatting,Java,Android,Simpledateformat,Date Formatting,当我的应用程序加载时,我会获取设备的设置,以便根据用户的区域设置显示日期/时间。如下图所示,模式正确,但am/pm标记未翻译为相应的语言(在本例中,语言为希腊语,本地语言为“el_GR”)。有办法解决这个问题吗 "am/pm" should be automatically translated to "πμ/μμ" public static final DateFormat USER_DF_TIME = DateFormat.getDateTimeInstance(DateFormat.

当我的应用程序加载时,我会获取设备的设置,以便根据用户的区域设置显示日期/时间。如下图所示,模式正确,但am/pm标记未翻译为相应的语言(在本例中,语言为希腊语,本地语言为“el_GR”)。有办法解决这个问题吗

"am/pm" should be automatically translated to "πμ/μμ"


public static final DateFormat USER_DF_TIME = DateFormat.getDateTimeInstance(DateFormat.SHORT,
        DateFormat.SHORT, Locale.getDefault());

我看你的代码没有问题

    private static final Locale GREEK_LOCALE = new Locale("el", "GR");
    public static final DateFormat USER_DF_TIME = DateFormat.getDateTimeInstance(DateFormat.SHORT,
            DateFormat.SHORT,GREEK_LOCALE );
    String dateString =USER_DF_TIME.format(new java.util.Date());
    System.out.println(dateString);
正确返回
15/5/2014 2:11μ
(我现在在EST)

似乎您对默认区域设置有问题。 跟随
为了获得正确的语言环境

在进一步调查之后,我发现了Java 6的一个类似错误。该错误在2007年报告,并最终在2011年得到解决

另外,根据甲骨文官方网页


在各种设备上测试我的代码,我发现它在安卓4.1.2和4.4上工作正常,但问题仍然存在于我的安卓4.1.1设备上。鉴于此,我推断这是一个Java语言问题,在较新的版本中得到了解决。

非常感谢@Mani的输入。它帮助我找到了正确的方向,以便找到问题(请参见下面我的详细说明)。我可以问一下您测试代码的android版本吗?希望代码不需要/不使用任何android SDK,那么这在android中重要吗?(注意**我不是Android程序员)所以当你调试代码时,你可以看到实际的值,但是当你在Android面板中绘制时,你是否面临这个问题?当我在Eclipse中运行你的代码时,但在Android之外,我做了新的区域设置(“el”,“GR”);输出是正确的。但是当我在物理设备上执行Locale.getDefault()时,调试器向我显示了我在上面发布的图像。getResources().getConfiguration().locale。我不是安卓专家,无法发表评论。看看吧。由于Locale.getDefault,问题似乎与格式化方式无关。尝试打印hte Locale.getDefault值并发布