How to specify firstDayOfWeek for java.util.Calendar using a JVM argument

别等时光非礼了梦想. 提交于 2019-11-29 17:23:05

问题


I'm trying to change default firstDayOfWeek for java.util.Calendar from SUNDAY to MONDAY. Is it possible to achieve this through JVM configuration instead of adding this piece of code?

cal.setFirstDayOfWeek(Calendar.MONDAY);

回答1:


The first day of the week is derived from the current locale. If you don't set the locale of the calendar (Calendar.getInstance(Locale), or new GregorianCalendar(Locale)), it will use the system's default. The system's default can be overridden by a JVM parameter:

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

This should show a different output with different JVM parameters for language/country:

  • -Duser.language=en -Duser.country=US -> en_US: 1 (Sunday)
  • -Duser.language=en -Duser.country=GB -> en_GB: 2 (Monday)

Don't forget that this could change other behavio(u)r too.




回答2:


According to the API:

Calendar defines a locale-specific seven day week using two parameters: the first day of the week and the minimal days in first week (from 1 to 7). These numbers are taken from the locale resource data when a Calendar is constructed. They may also be specified explicitly through the methods for setting their values.

So if you ensure that your locale is appropriately configured, this will be implicitly set. Personally, I would prefer explicitly setting this...

See #64038 for ways to set a locale from the command line.




回答3:


Have you tried to invoke the JVM with a different locale? But you should be careful with side effects...



来源:https://stackoverflow.com/questions/269486/how-to-specify-firstdayofweek-for-java-util-calendar-using-a-jvm-argument

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!