Как указать firstDayOfWeek для java.util.Calendar с помощью аргумента JVM

Я пытаюсь изменить firstDayOfWeek по умолчанию для java.util.Calendar с ВОСКРЕСЕНЬЯ на ПОНЕДЕЛЬНИК. Можно ли добиться этого с помощью конфигурации JVM вместо добавления этого фрагмента кода?

cal.setFirstDayOfWeek(Calendar.MONDAY);

person user35172    schedule 06.11.2008    source источник


Ответы (3)


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

Не забывайте, что это может изменить и другое поведение.

person Kariem    schedule 06.11.2008

Согласно API:

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

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

См. # 64038 для получения информации о способах установки языкового стандарта из командной строки.

person toolkit    schedule 06.11.2008

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

person ricafeal    schedule 06.11.2008