如何正确设置JVM时区

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (143)

我试图运行一个Java程序,但它采用的是默认的GMT时区而不是操作系统定义的时区。我的JDK版本是1.5,操作系统是Windows Server Enterprise(2007)

Windows有一个指定的中央时区,但是当我运行下面的程序时,它给了我一个GMT时间。

import java.util.Calendar;

public class DateTest
{
    public static void main(String[] args)
    {
        Calendar now = Calendar.getInstance();
        System.out.println(now.getTimeZone());
        System.out.println(now.getTime());
    }
}

这是输出

sun.util.calendar.ZoneInfo[id="GMT",
offset=0,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
Mon Mar 22 13:46:45 GMT 2010

请注意,我不想从应用程序设置时区。我希望JVM使用的时区应该是OS中指定的时区。(我没有发现与JDK和Microsoft Server 2003版本1.4的其他服务器的这个问题)。

提问于
用户回答回答于

你可以通过JVM这个参数

-Duser.timezone

例如

-Duser.timezone=Europe/Sofia

这应该可以做到这一点。设置环境变量TZ也可以在Linux上实现。

用户回答回答于

还可以使用以下代码在代码中设置默认时区。

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

给你

 TimeZone.setDefault(TimeZone.getTimeZone("Europe/Sofia"));

所属标签

可能回答问题的人

  • 找虫虫

    0 粉丝0 提问5 回答
  • 天使的炫翼

    17 粉丝531 提问5 回答
  • 不吃貓的鱼oo

    5 粉丝466 提问4 回答
  • 人生的旅途

    10 粉丝484 提问4 回答

扫码关注云+社区

领取腾讯云代金券