【问题标题】:How to make Java point to a different (Custom) Date/Time other than System Date/Time? [duplicate]如何使 Java 指向不同于系统日期/时间的(自定义)日期/时间? [复制]
【发布时间】:2016-04-29 08:01:22
【问题描述】:
我在工作中遇到了这种情况,我需要使用 JAVA 运行我的 java 应用程序,让我相信日期/时间在未来的某个地方。团队一直在更改系统时间并重新启动 WebSphere Application Sever 以反映所需的日期/时间。
但是,我觉得这是进行“时间旅行”的一种粗鲁方式。我四处搜索,发现有一种方法可以在启动时设置服务器的时区,方法是在 JVM 参数中使用“Duser.timezone=GMT”。除了更改我的系统日期/时间之外,还有没有让我的工作站上的 Java 指向自定义日期/时间?
【问题讨论】:
-
也复制了this 和this 以及其他几个。请在发帖前彻底搜索 Stack Overflow。
标签:
java
websphere
systemtime
【解决方案1】:
最好的做法是不要弄乱系统时钟。您应该改为对代码进行一些重构。例如让你的方法使用Clock.getInstance() (System.currentTimeMillis() -> Clock.getInstance().currentTimeMillis() / myClockInstance.currentTimeMillis())。
【讨论】:
-
如果 Java 8 不是一个选项,Guava 有一个类似的Ticker 类。
-
【解决方案2】:
其实也有一些乱七八糟的方法可以尝试:
1) 只需编写自己的 java.util.Date 类并希望它在 JVM 之前被加载。
2) 调整 ClassLoader 或编写一个自定义的,尝试对 java.util.Date 进行一些特别的照顾
3) 您也可以考虑使用不同的日历。
4) 做 Mateusz Stefaniak 指出的事情
5) 操作原始Java jars
可能还有更多我没想到的atm方式……