我在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());
答案 0 :(得分:0)
你能发布一个输出的例子吗?如果它的格式为2016-07-11T11:01:25.498Z
,则可能是UTC时间(如果它以Z结尾为UTC)。
您可以使用System.setProperty("user.timezone", "GMT+8");
或将其添加为环境变量,因此默认为" GMT + 8"