2016-04-28 24 views
1

我在我的工作中有这种情况,我需要用JAVA运行我的Java应用程序,以使相信日期/时间在未来的某个地方。团队一直在这样做,我改变了系统时间并重新启动了WebSphere Application Sever以反映所需的日期/时间。 但是,我觉得这是做这个“时间旅行”的糟糕途径。我搜索了四处,发现有一种方法可以在启动时通过在JVM参数中使用“Duser.timezone = GMT”来设置服务器的TimeZone。无论如何,除了更改我的系统日期/时间之外,还要让我的工作站上的Java指向自定义日期/时间?如何使Java指向除系统日期/时间以外的其他(自定义)日期/时间?

+0

另外复制的[此](http://stackoverflow.com/q/2001671/642706)和[this](http://stackoverflow.com/q/27067049/642706)和其他几个。请在发布之前彻底搜索堆栈溢出。 –

回答

1

最好的做法是不要搞乱系统时钟。您应该对代码进行一些重构。例如,使您的方法使用Clock.getInstance()System.currentTimeMillis() - >Clock.getInstance().currentTimeMillis()/myClockInstance.currentTimeMillis())。

+0

如果Java 8不是一个选项,Guava有类似的['Ticker'](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Ticker.html)类。 – shmosel

0

其实有凌乱的方法,你可以尝试:

1)简单地写自己的java.util.Date类,并希望它得到了JVM之前加载。

2)调谐的ClassLoader或编写自定义一个,试图得到一些特殊照顾为java.util.Date

3)你也可以考虑与不同的日历播放。

4)做什么Mateusz Stefaniak指出

5)操纵原始的Java罐子

甚至有可能出现更多的办法,我没想到的ATM ...