起動するとJava program by Java -Duser.timezone="UTC"
、
System.out.println( System.getProperty( "user.timezone" ) );
System.out.println( new Date() ); // prints time in UTC
uTC時刻を出力しますが、次のようなコードで設定した場合:
System.setProperty( "user.timezone", "UTC" );
System.out.println( System.getProperty( "user.timezone" ) ); // prints 'UTC'
System.out.println( new Date() ); // prints time in local zone, not in UTC
uTCで時刻を出力しません。コードで時間を設定する必要があります。ジョーダを探していない
環境:JDK 1.6/Windows XP
助けてください。どうもありがとう!
問題は、以前のJVMの起動時に、Javaはすでにデフォルトのタイムゾーンを設定しており、元の_"user.timezone"
_プロパティを使用してTimeZone.setDefault(...);
を呼び出していることです。後でSystem.setProperty("user.timezone", "UTC")
を指定したプロパティは、それ自体では効果がありません。
そのため、開始時にデフォルトのタイムゾーンを設定する通常の方法は次のとおりです。_Java -Duser.timezone=...
_
プログラムでタイムゾーンを設定する必要がある場合は、プロパティを変更した後、デフォルトのタイムゾーンをnull
に設定して、再計算を強制できます。
_ System.setProperty("user.timezone", "UTC");
TimeZone.setDefault(null);
_
( ここ から)。
または、よりシンプルでクリーンな場合は、TimeZone.setDefault(...);
を使用して直接割り当てます。