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

在Java中维护单独的应用程序时间?,java,javascript,date,datetime,Java,Javascript,Date,Datetime,我正在从eclipse运行一个web应用程序。在这个web应用程序中,我想将当前日期和时间设置为1992年11月24日。00:00 hrs GMT。在此之后,我希望应用程序自动增加时间并跟踪日期、月份和年份。在Java/JSP中有什么方法可以做到这一点吗?您应该存储“实时当前时间”和“过去当前时间”之间的差异,并在每次要检查过去时间时进行减法运算: final class Past { private final long differenceMs; public Past(final

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

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

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
将打印类似于
1992年11月24日星期二00:00:00 BRST
1992年11月24日星期二00:00:02 BRST
(取决于您所在的地区)


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

您想在1992年11月24日创建吗。00:00小时GMT时间应用程序范围?丑陋的方法是在应用程序启动时记住系统时间和24.11.92之间的差异。然后从每次访问的系统时间中减去它。@defaultlocale,您能澄清一下这有多难看吗?在我看来,这是最干净、最优雅的解决方案。请参见下面的示例。@BrunoReis,您的实现非常顺利。我在考虑一些jvm范围内的魔法设置来摆脱重构。