如何使用JVM参数为java.util.Calendar指定firstDayOfWeek

时间:2008-11-06 17:12:21

标签: java calendar jvm-arguments

我正在尝试将java.util.Calendar的默认firstDayOfWeek从SUNDAY更改为MONDAY。是否可以通过JVM配置实现此目的,而不是添加这段代码?

cal.setFirstDayOfWeek(Calendar.MONDAY);

3 个答案:

答案 0 :(得分:16)

一周的第一天来自当前的区域设置。如果您未设置日历的语言环境(Calendar.getInstance(Locale)new GregorianCalendar(Locale)),则会使用系统的默认设置。系统的默认值可以被JVM参数覆盖:

public static void main(String[] args) {
    Calendar c = new GregorianCalendar();
    System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
}

这应显示具有不同语言/国家/地区的JVM参数的不同输出:

  • -Duser.language=en -Duser.country=US - > en_US: 1 (星期日)
  • -Duser.language=en -Duser.country=GB - > en_GB: 2 (星期一)

不要忘记这可能会改变其他行为(你)。

答案 1 :(得分:3)

根据API:

  

日历使用两个参数定义特定于语言环境的七天工作周:一周的第一天和第一周的最小天数(从1到7)。构建Calendar时,这些数字取自语言环境资源数据。它们也可以通过设置其值的方法明确指定。

因此,如果您确保正确配置了区域设置,则会隐式设置。就个人而言,我更愿意明确地设置这个......

有关从命令行设置区域设置的方法,请参阅#64038

答案 2 :(得分:0)

您是否尝试使用其他语言环境调用JVM?但你应该小心副作用......