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

14

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

cal.setFirstDayOfWeek(Calendar.MONDAY);
3个回答

18

一周的第一天是根据当前区域设置确定的。如果您没有设置日历的区域设置(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 (星期一)

请记住,这可能会改变其他行为。


3
根据API:
日历使用两个参数定义了特定于语言环境的七天星期:一周的第一天和第一周的最小天数(从1到7)。这些数字在构建日历时从语言环境资源数据中获取。它们也可以通过设置它们的值的方法显式地指定。
因此,如果您确保语言环境已正确配置,则会隐式设置这个值。个人而言,我更喜欢显式设置这个值...
请参阅#64038以了解如何从命令行设置语言环境。

0

您是否尝试过使用不同的语言环境调用JVM?但是您应该注意副作用...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接