【问题标题】:What locale does DecimalFormat and DateFormat use by default? (why is it different to Locale.getDefault()?)DecimalFormat 和 DateFormat 默认使用什么语言环境? (为什么它与 Locale.getDefault() 不同?)
【发布时间】:2016-02-08 09:37:59
【问题描述】:

在调试我的应用程序时,如果发现DecimalFormatDateFormat默认设置为使用nl_NL,但系统区域设置似乎是en_US

我通过评估找到了第一个:

new DecimalFormat().symbols.locale
new SimpleDateFormat().locale

第二个:

Locale.getDefault()
System.getProperty("user.country")
System.getProperty("user.language")

那里发生了什么?

如何将这些格式化程序设置为默认使用特定语言环境? (我正在编写单元测试,并希望在不触及应用程序代码的情况下设置特定的语言环境)

【问题讨论】:

    标签: java locale date-format


    【解决方案1】:

    从 Java 7 开始,the default locale comes in two categories:“显示”和“格式”。 两者都是根据环境初始设置的。可以拨打Locale.getDefault(Category)找到它们。

    除了问题中提到的系统属性:

    "user.country"
    "user.language"
    

    运行 JVM 时也可能出现以下情况:

    "user.country.format"
    "user.language.format"
    "user.country.display"
    "user.language.display"
    

    原因似乎是some OS's allow independent localization settings for displaying text and for formatting dates, numbers and currency

    回答我的最后一个问题,请致电Locale.setDefault(Locale) the default locale will be set for all categories

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      相关资源
      最近更新 更多