0

私のマシンでは、設定されたタイムゾーンは (UTC) 協定世界時です。しかし、以下のサンプル コードはパキスタン時間と +5:00 を返します。

private void Foo() 
{

 DateTimeFormatter dtf = DateTimeFormat.forPattern("ZZ");
 DateTime dt = DateTime.now();

 System.out.println(dtf.print(dt));  // Prints +05:00, though expected is +00:00

 DateTimeZone tz = DateTimeZone.getDefault();

 System.out.println(" Get Name " + tz.getName(System.currentTimeMillis())); 
 // Prints Get Name Pakistan Time , although expected is Coordinated Universal Time

} 
4

1 に答える 1

1

マシンが UTC に設定されている可能性がありますが、JVM が別の設定になっている可能性があります。

上のJoda Time ドキュメントからDateTimeZone.getDefault():

デフォルトのタイム ゾーンは、システム プロパティ user.timezone から派生します。それが null または有効な識別子でない場合、JDK TimeZone デフォルトの値が変換されます。それが失敗した場合、UTC が使用されます。

したがって、起動時にタイムゾーンを JVM に渡すことができます。

java -Duser.timezone="UTC"

TZまたは、環境変数などでシステムのタイムゾーンを設定することもできます。詳細については、この回答を参照してください。

于 2013-10-15T14:12:26.910 に答える