2016-04-28 61 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 ...