是否有使用Windows本地化信息的DateFormatProvider?

时间:2010-10-21 16:16:44

标签: java windows datetime localization formatting

我正在编写一个必须显示日期的java gui应用程序。

由于此应用程序主要在Windows系统上运行,我希望能够使用date&与Windows本地化设置对应的时间格式。

我在Java 6中找到了DateFormatProvider类,这给了我很高的期望......但我还没有找到一个可以使用Windows本地化信息的实现。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您应该能够将DateFormatProvider方法与getDefault()返回的默认语言环境一起使用。

  

Java虚拟机设置   基于的启动期间的默认语言环境   主机环境。

编辑:如果您不能将默认语言环境传递给DateFormat类,则可以使用示例代码here来实现扩展DateFormatProvider的具体类。

答案 1 :(得分:0)

我没有听说任何使用MS Windows格式化例程的Java日期格式化程序(或者只是定义)。由于Java意味着是多平台(一次编译,在任何地方运行),因为一致性原因,它根本无法使用底层操作系统行为。

您可以使用定义为here的DateFormat类:

DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
String formattedDate = dateFormatter(new Date());

关于这门课程的一个重要问题:捷克语,波兰语和俄语的LONG日期格式也被打破,也可能用于其他斯拉夫语言。我建议使用MEDIUM日期格式。

顺便说一句。这将格式化格里高利或朱利安日历的日期。它不会给你阿拉伯语或希伯来语日历(虽然前者是某些国家的默认日历)。


修改

我不知道您的具体要求,但既然您提到了Locale,那么ICU4J's DateFormat类可能就是您要找的。尽管如此,根据我的知识(这里可能不完整),他们使用自己的格式化程序和本地化的文本数据库。但是,这个数据库可能比与JDK(以前的ICU快照)捆绑的数据库更完整(特别是在Mac上)。