DecimalFormat和DateFormat默认使用什么语言环境? (为什么它与Locale.getDefault()不同?)

时间:2016-02-08 09:37:59

标签: java locale date-format

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

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

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

第二个:

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

那里发生了什么?

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

1 个答案:

答案 0 :(得分:1)

从Java 7开始,the default locale comes in two categories:" DISPLAY"和"格式"。 两者最初都是根据环境设定的。可以通过致电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来回答我的上一个问题。