有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

我在Java6中发现了DateFormatProvider类,这给了我很大的希望。。。但是我还没有找到一个使用Windows本地化信息的实现

有什么建议吗


共 (2) 个答案

  1. # 1 楼答案

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

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

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

    这门课的一个重要问题是:捷克语、波兰语和俄语的长日期格式被打破,其他斯拉夫语也可能被打破。我建议改用中日期格式

    顺便说一句,这将为公历或儒略历设置日期格式。它不会提供阿拉伯文或希伯来文日历(尽管某些国家默认使用阿拉伯文或希伯来文日历)


    编辑

    我不知道您的具体要求,但既然您提到了Locale,那么ICU4J'sDateFormat类可能就是您想要的。不过,据我所知(这里可能不完整),他们正在使用自己的格式化程序和本地化文本数据库。但是,这个数据库可能比与JDK(以前的ICU快照)捆绑的数据库更完整(尤其是在Mac上)

  2. # 2 楼答案

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

    The Java Virtual Machine sets the default locale during startup based on the host environment.

    编辑:如果不能将默认语言环境传递给DateFormat类,那么有一个示例代码here用于实现扩展DateFormatProvider的具体类