当我的应用加载时,我会获取设备的设置,以便根据用户的区域设置显示日期/时间。如下图所示,模式是正确的,但是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());
答案 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语言问题。