Первый день недели происходит от текущей локали. Если вы не установили языковой стандарт календаря (Calendar.getInstance(Locale)
или новый GregorianCalendar(Locale))
, он будет использовать систему по умолчанию.
public static void main(String[] args) {
Calendar c = new GregorianCalendar();
System.out.println(Locale.getDefault() + ": " + c.getFirstDayOfWeek());
}
Это должно показать другой выход с различными параметрами виртуальной машины Java для языка/страны:
-Duser.language=en -Duser.country=US -> en_US: 1 (Sunday)
-Duser.language=en -Duser.country=GB -> en_GB: 2 (Monday)
Кроме того, вы можете использовать метод setFirstDayOfWeek()
установить в первый день недели. Этот метод может влиять только на return values of WEEK_OF_MONTH
или WEEK_OF_YEAR
. F или DAY_OF_WEEK, он ничего не делает.
См here для более
Кроме того, если вы видите Calendar.java, вы увидите, что значения в течение нескольких дней постоянно, как показано ниже. Вот почему он вернет 1 для ПОНЕДЕЛЬНИКА, независимо от того, на что установлен первый день недели.
public final static int SUNDAY = 1;
общественный окончательный статический int MONDAY = 2; ....
общественный окончательный статический int SATURDAY = 7;
Вы можете сделать что-то, как показано ниже, и манипулировать данными в соответствии с первым днем, который вы устанавливаете.
[c.get(Calendar.DAY_OF_WEEK) - 1]);