我在centos服务器上有一个tomcat服务,它是一个时间敏感的服务。在我昨天安装JDK8之前,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()); 发布于 2017-09-18 21:50:55
你能发布一个输出的例子吗?如果它的格式为2016-07-11T11:01:25.498Z,那么它可能使用协调世界时的时间(如果它以Z结束,那么它就是世界协调时)。
您可以使用System.setProperty("user.timezone", "GMT+8");或将其添加为环境变量,以使其缺省为"GMT+8“
https://stackoverflow.com/questions/46166752
复制相似问题