在Centos上用java获取日期不正确?

在Centos上用java获取日期不正确?,java,linux,jakarta-ee,centos,Java,Linux,Jakarta Ee,Centos,大家好 我有一个使用spring框架的j2ee应用程序 在在线服务器(centos)上调试时 当试图通过打印new date()的值在应用程序中获取日期时对象 它检索GMT-6中的时间,但在通过终端获取服务器时间时 命令日期它是以GMT时间检索的,是实时的,所以我想知道GMT-6是从哪里来的,为什么会发生这种奇怪的行为?也许在你的应用程序中的某个地方,默认时区被更改为时区。setDefault(…)?这听起来像是一个语言环境问题。更具体地说,这不是问题,它只是Java处理不同时区/区域设置的方式

大家好 我有一个使用spring框架的j2ee应用程序 在在线服务器(centos)上调试时 当试图通过打印
new date()的值在应用程序中获取日期时对象
它检索GMT-6中的时间,但在通过终端获取服务器时间时

命令日期它是以GMT时间检索的,是实时的,所以我想知道GMT-6是从哪里来的,为什么会发生这种奇怪的行为?

也许在你的应用程序中的某个地方,默认时区被更改为
时区。setDefault(…)

这听起来像是一个语言环境问题。更具体地说,这不是问题,它只是Java处理不同时区/区域设置的方式

使用以下来源的代码:

您可以看到Java如何解释您的环境

如果您更改CentOS的时区/区域设置,Java应该选择该更改并相应地显示时间

但这听起来有点过头了,基于区域设置可能是您所需要的


不同的应用程序可能会以不同的方式输出相同的日期。

重新启动apache、tomcat。。。但是仍然不知道为什么会发生这种行为。

请看我上面的答案,告诉我你的想法?@sword101:输出的GMT-6时间正确吗?重新启动后是否会再次发生这种情况?如果是,什么时候?你的调试器是什么?是的,时间在GMT-6中是正确的,是的,它在重新启动后再次发生,但我没有注意到这里的模式,我正在用log4j进行调试…@sword101:你在使用吗?如果是,日期转换说明符和日期格式说明符是什么?检查log4j.properties或log4j.xml文件。如果使用简单的sysout语句,结果与调试器相同,我认为问题与调试器无关,你怎么看?检查以确保应用程序中的任何代码都不会更改默认的JVM宽时区。你能告诉我你认为哪些方法可以做到这一点吗?搜索了整个应用程序,没有发现将时区设置为默认时区的事。
Properties p = System.getProperties();
Enumeration keys = p.keys();
while (keys.hasMoreElements()) {
  String key = (String)keys.nextElement();
  String value = (String)p.get(key);
  System.out.println(key + ": " + value);
}