Pergunta

Eu estou tentando mudar firstDayOfWeek padrão para java.util.Calendar de domingo a segunda-feira. É possível conseguir isso através da configuração JVM em vez de adicionar este pedaço de código?

cal.setFirstDayOfWeek(Calendar.MONDAY);
Foi útil?

Solução

O primeiro dia da semana é derivado do local atual. Se você não definir a localidade do calendário ( Calendar.getInstance (Locale) , ou novo GregorianCalendar (Locale) ), ele irá usar o padrão do sistema. padrão do sistema pode ser substituído por um parâmetro JVM:

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

Isto deve mostrar uma saída diferente, com diferentes parâmetros JVM para linguagem / país:

  • -Duser.language=en -Duser.country=US -> en_US: 1 (domingo)
  • -Duser.language=en -Duser.country=GB -> en_GB: 2 (segunda-feira)

Não se esqueça que isso pode mudar outra behavio (u) r também.

Outras dicas

De acordo com a API:

Calendário define uma específica de localidade sete semanas dia usando dois parâmetros: o primeiro dia da semana e os dias mínimos na primeira semana (de 1 a 7). Estes números são tomadas a partir dos dados de recursos locais quando um calendário é construído. Eles também podem ser especificados explicitamente através dos métodos para definir os seus valores.

Então, se você garantir que seu local está devidamente configurado, este será definido implicitamente. Pessoalmente, eu preferiria definir explicitamente essa ...

Consulte # 64038 para maneiras de configurar uma localidade a partir da linha de comando.

Você já tentou invocar a JVM com uma localidade diferente? Mas você deve ter cuidado com efeitos colaterais ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top