Как указать firstDayOfWeek для java.util.Calendar с использованием аргумента JVM - PullRequest
13 голосов
/ 06 ноября 2008

Я пытаюсь изменить defaultDayOfWeek по умолчанию для java.util.Calendar с воскресенья на понедельник. Можно ли добиться этого с помощью конфигурации JVM вместо добавления этого фрагмента кода?

cal.setFirstDayOfWeek(Calendar.MONDAY);

Ответы [ 3 ]

16 голосов
/ 06 ноября 2008

Первый день недели выводится из текущей локали. Если вы не установите языковой стандарт календаря ( 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.

3 голосов
/ 06 ноября 2008

По API:

Календарь определяет семидневную неделю, зависящую от локали, используя два параметра: первый день недели и минимальные дни в первую неделю (от 1 до 7). Эти числа берутся из данных ресурса локали при создании Календаря. Они также могут быть указаны явно через методы установки их значений.

Таким образом, если вы убедитесь, что ваш языковой стандарт настроен надлежащим образом, это будет установлено неявно. Лично я предпочел бы явно установить это ...

См. # 64038 о способах установки локали из командной строки.

0 голосов
/ 06 ноября 2008

Вы пытались вызвать JVM с другой локалью? Но вы должны быть осторожны с побочными эффектами ...

...