13

java.util.CalendarのデフォルトのfirstDayOfWeekをSUNDAYからMONDAYに変更しようとしています。このコードを追加する代わりに、JVM構成を介してこれを実現することは可能ですか?

cal.setFirstDayOfWeek(Calendar.MONDAY);
4

3 に答える 3

17

週の最初の曜日は、現在のロケールから派生します。カレンダーのロケール ( 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

これにより、他の動作も変わる可能性があることを忘れないでください。

于 2008-11-06T17:28:25.753 に答える
3

APIによると:

カレンダは、週の最初の日と最初の週の最小日数(1から7)の2つのパラメーターを使用して、ロケール固有の7日間の週を定義します。これらの数値は、カレンダーの作成時にロケールリソースデータから取得されます。それらは、それらの値を設定するためのメソッドを介して明示的に指定することもできます。

したがって、ロケールが適切に構成されていることを確認すると、これは暗黙的に設定されます。個人的には、これを明示的に設定したいと思います...

コマンドラインからロケールを設定する方法については、 #64038を参照してください。

于 2008-11-06T17:20:09.843 に答える
0

別のロケールでJVMを呼び出そうとしましたか?しかし、あなたは副作用に注意する必要があります...

于 2008-11-06T17:18:36.553 に答える