为什么Calendar.getInstance()无法使用默认语言环境?

时间:2014-07-19 16:51:54

标签: java calendar jvm

昨天我收到了一个问题的答案: WEEK_OF_YEAR inconsistent on different machines

(基本上,了解了如何根据 firstDayOfWeek minimalDaysInFirstWeek 计算WEEK_OF_YEAR)

但现在我有一个后续问题 - 其他设置可能影响日历使用默认语言环境的能力?因为这是我正在观察的行为(具有正确的en_US默认语言环境):

Calendar c = Calendar.getInstance(); // should use the default locale, per docs
System.out.println(c.getFirstDayOfWeek());
System.out.println(c.getMinimalDaysInFirstWeek());
c = Calendar.getInstance(Locale.getDefault()); // provide the default explicitly
System.out.println(c.getFirstDayOfWeek());
System.out.println(c.getMinimalDaysInFirstWeek());

运行它的输出是:

  • 2
  • 4
  • 1
  • 1

如果我在Clojure中运行它(JVM语言,所以行为完全相同),它看起来更荒谬(setDefault到getDefault的结果......?!):

user=> (.getFirstDayOfWeek  (java.util.Calendar/getInstance))
2
user=> (Locale/setDefault (Locale/getDefault))
nil
user=> (.getFirstDayOfWeek  (java.util.Calendar/getInstance))
1

上面的例子在没有任何JVM参数的情况下运行 - 所以,我的问题是,firstDayOfWeek和minimalDaysInWeek的2和4的设置在哪里?而且,也许最重要的是 - 如何永久修复它们?

谢谢!

0 个答案:

没有答案