安装jdk 8后JVM的时区不正确

时间:2017-09-12 01:55:36

标签: java linux centos jvm

我在centos服务器上有一个tomcat服务,它是一个时间敏感的服务。在我昨天安装jdk 8之前,JVM正确地获得了时区。

要修复它,我必须在非常简单的java命令之后添加“-Duser.timezone = GMT + 8”,这让我觉得非常不方便。

我在服务器上使用date命令,它提供了正确的时区。所以我很好奇: 1.什么会导致这个问题 2.我怎么能整齐地解决它?

非常感谢你。

以下是测试信息:

[chiming1@localhost test]$ date +'%Y%m%d %H:%M:%S %z'  
20170920 15:01:20 +0800  
[chiming1@localhost test]$ java  -Duser.timezone=GMT+08 javatest/Test  
2017-09-20 15:01:34  
GMT+08:00  
GMT+08:00  
[chiming1@localhost test]$ java javatest/Test  
2017-09-20 07:01:48  
Greenwich Mean Time  
GMT  
[chiming1@localhost test]$ java -version  
java version "1.8.0_144"  
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)  
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)  

我的java测试代码是:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
Date d = new Date();  
System.out.println(sdf.format(d));  
TimeZone tz = TimeZone.getDefault();  
System.out.println(tz.getDisplayName());  
System.out.println(tz.getID());  

1 个答案:

答案 0 :(得分:0)

你能发布一个输出的例子吗?如果它的格式为2016-07-11T11:01:25.498Z,则可能是UTC时间(如果它以Z结尾为UTC)。

您可以使用System.setProperty("user.timezone", "GMT+8");或将其添加为环境变量,因此默认为" GMT + 8"