我最近升级到Java 8并遇到了格式化日期的“问题”。 JDK 8允许提供程序用于某些g11n / i18n函数,如果你在类路径上有ICU,它应该选择它。这不是一个真正的问题,而是一个意想不到的曲线,我的大部分功能都像以前一样工作。
我想显示今天的日期,但是使用区域设置的日期格式,小数点分隔符等。这很顺利,但是当我使用某些具有不同数字集的区域设置时,例如 ar_OM < / strong>,使用Hindu-Arabic Numeral System,我得到格式化的日期,但也使用此数字系统中的数字。
代码:
Locale arOmLocale = new Locale("ar", "OM");
DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, arOmLocale);
System.out.println(df.format(new Date()));
我希望看到它打印出 2015/04/11 ,但它打印出11/04 / 2015
有没有办法让它不更改数字系统/符号,但仍然提供特定于区域设置的格式?
答案 0 :(得分:0)
有一个特定于ICU4j的修复程序,它使用@numbers=latn
作为语言环境中的变体/脚本。
这里列出了一些细节:Formatting for a Locale