Domanda

Sto provando a cambiare per impostazione predefinita firstDayOfWeek per java.util.Calendar da DOMENICA a LUNEDÌ. È possibile raggiungere questo obiettivo tramite la configurazione di JVM invece di aggiungere questo pezzo di codice?

cal.setFirstDayOfWeek(Calendar.MONDAY);
È stato utile?

Soluzione

Il primo giorno della settimana deriva dalla locale corrente. Se non imposti le impostazioni internazionali del calendario ( Calendar.getInstance (Locale) o new GregorianCalendar (Locale) ), utilizzerà i valori predefiniti del sistema. L'impostazione predefinita del sistema può essere sovrascritta da un parametro JVM:

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

Questo dovrebbe mostrare un output diverso con parametri JVM diversi per lingua / paese:

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

Non dimenticare che questo potrebbe cambiare anche altri comportamenti (u) r.

Altri suggerimenti

Secondo l'API:

  

Il calendario definisce una settimana di sette giorni specifica della locale utilizzando due parametri: il primo giorno della settimana e i giorni minimi della prima settimana (da 1 a 7). Questi numeri sono ricavati dai dati delle risorse locali quando viene costruito un calendario. Possono anche essere specificati esplicitamente attraverso i metodi per l'impostazione dei loro valori.

Quindi, se ti assicuri che le tue impostazioni internazionali siano configurate in modo appropriato, questo sarà implicitamente impostato. Personalmente, preferirei impostare esplicitamente questo ...

Vedi # 64038 per i modi per impostare una locale dalla riga di comando.

Hai provato a invocare la JVM con una locale diversa? Ma dovresti stare attento con gli effetti collaterali ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top