在Java中维持单独的应用程序时间?

时间:2012-10-03 05:14:16

标签: java javascript date datetime

我正在从eclipse运行一个Web应用程序。在此Web应用程序中,我想将当前日期和时间设置为24/11/1992。格林威治标准时间00:00在此之后,我希望应用程序自动增加时间并跟踪日期,月份和年份。我有什么方法可以在Java / JSP中做到这一点吗?

1 个答案:

答案 0 :(得分:3)

您应该存储“实际当前时间”和“过去当前时间”之间的差异,并在每次要检查过去时间时进行减法:

final class Past {
  private final long differenceMs;
  public Past(final Date pastDate) {
    this.differenceMs = (System.currentTimeMillis() - pastDate.getTime());
  }
  public Date getUpdatedPastDate() {
    return new Date(System.currentTimeMillis() - differenceMs);
  }
}

class Test {
  public static void main(String[] args) throws Throwable {
    final Calendar cal = Calendar.getInstance();
    cal.set(1992, 10, 24, 0, 0, 0); // this is 24/11/1992
    final Past past = new Past(cal.getTime());
    System.out.println(past.getUpdatedPastDate());
    Thread.sleep(2000);
    System.out.println(past.getUpdatedPastDate());
  }
}

两个println会打印Tue Nov 24 00:00:00 BRST 1992Tue Nov 24 00:00:02 BRST 1992之类的内容(具体取决于您的语言区域)。

没有必要“自动增加”,没有多线程,类是不可变的(因此本质上是线程安全的)并且非常非常干净。