我正在尝试将 java.util.Calendar 的默认 firstDayOfWeek 从 SUNDAY 更改为 MONDAY。是否可以通过JVM配置而不是添加这段代码来实现这一点?
cal.setFirstDayOfWeek(Calendar.MONDAY);
我正在尝试将 java.util.Calendar 的默认 firstDayOfWeek 从 SUNDAY 更改为 MONDAY。是否可以通过JVM配置而不是添加这段代码来实现这一点?
cal.setFirstDayOfWeek(Calendar.MONDAY);
一周的第一天派生自当前语言环境。如果您不设置日历的区域设置(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
不要忘记这也可能改变其他行为(u)r。
根据 API:
Calendar 使用两个参数定义特定于语言环境的一周 7 天:一周的第一天和第一周的最少天数(从 1 到 7)。这些数字是在构造日历时从语言环境资源数据中获取的。它们也可以通过设置它们的值的方法明确指定。
因此,如果您确保正确配置了您的语言环境,这将被隐式设置。就个人而言,我更喜欢明确设置这个......
有关从命令行设置语言环境的方法,请参见#64038。
您是否尝试过使用不同的语言环境调用 JVM?但是你应该小心副作用......