使用DateFormat时,am / pm字符串未本地化/已翻译

时间:2014-05-15 17:37:23

标签: java android simpledateformat date-formatting

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

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


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

enter image description here

2 个答案:

答案 0 :(得分:1)

我发现您的代码没有问题。

    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)

似乎您在使用默认语言环境时遇到问题。 跟随 https://stackoverflow.com/a/4212671/2182351获取正确的区域设置

答案 1 :(得分:1)

经过进一步调查后,我发现了类似的Java 6错误"Swedish localization has incorrect am/pm markers"。这个错误在2007年被报道,最终于2011年得到解决。

另外,根据官方Oracle页面"The set of supported locales varies between different implementations of the Java Platform Standard Edition (Java SE)"

在各种设备上测试我的代码我发现它在android 4.1.2和4.4上正常工作,但问题仍然存在于我的android 4.1.1设备上。鉴于old android's Java version is similar to Java 6我推断这是一个在较新版本中解决的Java语言问题。