Java / Linux中的时区问题

时间:2009-10-22 13:07:53

标签: timezone

我有一个在tomcat / Linux下以集群模式运行的应用程序(两个节点)。 不幸的是我注意到node1和node2有不同的时间设置。 当我在一个shell中打出“date”时,我会在两台机器上得到相同的结果:

  > date  --rfc-2822
    Thu, 22 Oct 2009 15:00:15 +0200

我写了一个小的java程序,它只打印格式化的日期(和时间)。

import java.util.Date;
import java.util.TimeZone; 

public class TimeTest {

    public static void main(String args[]) {
    long time = System.currentTimeMillis();
    String millis = Long.toString(time);

    Date date = new Date(time);
    System.out.println("Current time in milliseconds = " + millis + " => " + date.toString());
    System.out.println("Current time zone: " + TimeZone.getDefault().getID());
    }
}

我得到的一个节点:     以毫秒为单位的当前时间= 1256215701981 =>周四10月22日13:48:21 GMT + 01:00 2009     当前时区:GMT + 01:00

而在另一个节点我得到:     以毫秒为单位的当前时间= 1256215779203 =>星期四10月22日14:49:39 CEST 2009     当前时区:欧洲/柏林

这是Linux设置还是java设置? 无论如何,我该如何改变呢?

提前致谢!

路易斯

1 个答案:

答案 0 :(得分:2)

根据documentation,默认TimeZone的来源可能因实施而异。对于您的情况,似乎一台服务器正在使用夏令时,而另一台服务器则没有。

此外,此question可能会有所帮助。