代码之家  ›  专栏  ›  技术社区  ›  David G

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

  •  1
  • David G  · 技术社区  · 15 年前

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

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

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

    有什么建议吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Steve Townsend    15 年前

    你应该能够使用 DateFormatProvider 方法返回默认区域设置 getDefault() .

    Java虚拟机设置 启动期间的默认区域设置基于 宿主环境。

    编辑:如果不能将默认区域设置传递给 DateFormat 类,这里有示例代码 here 用于实现扩展 日期格式提供程序 .

        2
  •  0
  •   Paweł Dyda    15 年前

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

    可以使用定义的DateFormat类 here :

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

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

    顺便说一下,这将格式化公历或儒略历的日期。它不会给你阿拉伯文或希伯来文日历(尽管前者在某些国家是默认的)。


    编辑

    我不知道你的具体要求,但既然你提到了地区,也许 ICU4J's DateFormat 你要找的是班级。不过,据我所知(这里可能不完整),他们正在使用自己的格式化程序和本地化文本数据库。但是,这个数据库可能比与JDK捆绑的数据库(以前的ICU快照)更完整(尤其是在Mac上)。