web-dev-qa-db-ja.com

Java System.getProperty( "user.timezone")は機能しません

起動すると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

助けてください。どうもありがとう!

16
user1418717

問題は、以前の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(...);を使用して直接割り当てます。

24
leonbloy