【问题标题】:How can I format date by locale in Java? [duplicate]如何在 Java 中按语言环境格式化日期? [复制]
【发布时间】:2009-12-23 10:07:04
【问题描述】:

我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家/地区都有不同类型的日期格式,所以可以按区域设置日期吗?

【问题讨论】:

    标签: java date formatting locale


    【解决方案1】:

    是的,使用DateFormat.getDateInstance(int style, Locale aLocale) 这会以特定于区域设置的方式显示当前日期。

    所以,例如:

    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale);
    String formattedDate = df.format(yourDate);
    

    请参阅文档以了解样式参数的确切含义(SHORTMEDIUM 等)

    【讨论】:

    • 如何在其中包含分钟和秒?这将很有用,因为只是这一天有点太粗糙了。编辑:没关系,这是getTimeInstance()
    【解决方案2】:

    SimpleDateFormat 有一个接受语言环境的构造函数,你试过吗?

    http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html

    类似的东西 new SimpleDateFormat("your-pattern-here", Locale.getDefault());

    【讨论】:

    • 专门针对来自不同国家的 i18n 应用程序,只有 @Bozho 的解决方案才有效,因为您不知道需要使用的“模式”
    【解决方案3】:

    乔达时间

    使用Joda-Time 2.4 库。 DateTimeFormat 类是 DateTimeFormatter 格式化程序的工厂。该类提供了一个forStyle 方法来访问适合Locale 的格式化程序。

    DateTimeFormatter formatter = DateTimeFormat.forStyle( "MM" ).withLocale( Java.util.Locale.CANADA_FRENCH );
    String output = formatter.print( DateTime.now( DateTimeZone.forID( "America/Montreal" ) ) );
    

    带有两个字母的参数指定日期部分和时间部分的格式。指定字符“S”表示短样式,“M”表示中号,“L”表示长,“F”表示完整。通过指定样式字符“-”连字符可以省略日期或时间。

    请注意,我们同时指定了区域设置和时区。有些人混淆了这两者。

    • 时区是 UTC 的偏移量一组夏令时规则和其他异常以及它们的历史变化。
    • 语言环境是一种人类语言,例如 Français,以及代表文化习俗的国家代码(例如加拿大),包括日期时间字符串的格式。

    我们需要所有这些部分来正确生成日期时间值的字符串表示。

    【讨论】:

      【解决方案4】:

      看看java.text.DateFormat。 派生类java.text.SimpleDateFormat

      更易于使用(功率稍小​​)

      这里是 Java 国际化的一个很好的介绍:http://java.sun.com/docs/books/tutorial/i18n/index.html(“格式化”部分解决了您的问题,等等)。

      【讨论】:

        【解决方案5】:

        我同意 Laura 和 SimpleDateFormat,这是在 java 中管理日期的最佳方式。您可以设置模式和区域设置。另外,您可以看看这个wikipedia article about Date in the world - 没有太多不同的使用方法;通常是美国/中国/世界其他地区-

        【讨论】:

          猜你喜欢
          • 2015-05-31
          • 2010-11-23
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 1970-01-01
          • 2020-03-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多