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 TimeDateTimeZone.getDefault()文档:

默认时区派生自系统属性 user.timezone。如果它为 null 或不是有效标识符,则转换 JDK TimeZone 默认值。如果失败,则使用 UTC。

因此,您可以在启动时将时区传递给 JVM:

java -Duser.timezone="UTC"

TZ或者您可以在环境变量等中设置系统时区。有关更多详细信息,请参阅此答案

于 2013-10-15T14:12:26.910 回答